sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent sl@0: */ sl@0: sl@0: #include sl@0: #include "t_pseudoappeglbase.h" sl@0: sl@0: const TInt KMaxConfigs = 1024; sl@0: sl@0: CEglBase::CEglBase(const TDisplayMode& aMode,const TSize& aSurfaceSz, const TInt aHRate, const TInt aVRate) sl@0: : CTestAnimation(),iDispMode(aMode) sl@0: { sl@0: iSurfaceSize=aSurfaceSz; sl@0: iHorizontalRate=aHRate; sl@0: iVerticalRate=aVRate; sl@0: } sl@0: sl@0: void CEglBase::BaseConstructL(RWindow* aWin) sl@0: { sl@0: // eglGetDisplay sl@0: iDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); sl@0: TestL(iDisplay!=EGL_NO_DISPLAY, _L("eglGetDisplay failed")); sl@0: sl@0: // eglInitialize sl@0: TInt ret = eglInitialize(iDisplay, NULL, NULL); sl@0: TestL(ret, _L("eglInitialize failed")); sl@0: sl@0: // eglGetConfigs sl@0: EGLint numConfigs; sl@0: EGLConfig configs[KMaxConfigs]; sl@0: ret = eglGetConfigs(iDisplay, configs, KMaxConfigs, &numConfigs); sl@0: TestL(ret, _L("eglGetConfigs failed")); sl@0: TestL(numConfigs>0, _L("eglGetConfigs returned no configs")); sl@0: sl@0: const EGLint* attribList = NULL; sl@0: sl@0: // Select attribs based on current display mode sl@0: switch (iDispMode) sl@0: { sl@0: case EColor4K: attribList = KColor4KAttribList; break; sl@0: case EColor64K: attribList = KColor64KAttribList; break; sl@0: case EColor16M: attribList = KColor16MAttribList; break; sl@0: case EColor16MA:attribList = KColor16MAAttribList; break; sl@0: default: User::Panic(_L("CEglBase"), KErrArgument); sl@0: } sl@0: sl@0: RDebug::Print(_L("Display Mode: %d"), iDispMode ); sl@0: sl@0: // eglChooseConfig sl@0: ret=eglChooseConfig(iDisplay, attribList, configs, KMaxConfigs, &numConfigs); sl@0: TestL(ret, _L("eglChooseConfig failed")); sl@0: TestL(numConfigs>0, _L("eglChooseConfig returned no configs")); sl@0: sl@0: if (attribList) sl@0: { sl@0: TInt configIndex = GetSuitableConfig(configs, numConfigs, attribList); sl@0: TestL(configIndex!=KErrNotFound, _L("No suitable configuration found") ); sl@0: iUseConfig = configs[configIndex]; sl@0: } sl@0: sl@0: // eglCreateWindowSurface sl@0: iSurface = eglCreateWindowSurface(iDisplay, iUseConfig, aWin, NULL); sl@0: TestL(iSurface!=EGL_NO_SURFACE, _L("eglCreateWindowSurface failed") ); sl@0: } sl@0: sl@0: CEglBase::~CEglBase() sl@0: { sl@0: // Clean everything allocated. sl@0: eglMakeCurrent(iDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); sl@0: eglDestroyContext(iDisplay, iContext); sl@0: eglDestroySurface(iDisplay, iSurface); sl@0: eglTerminate(iDisplay); sl@0: } sl@0: sl@0: TInt CEglBase::GetSuitableConfig(const EGLConfig* aConfigs, EGLint aNumConfigs, const EGLint* attribs) sl@0: { sl@0: TInt configIndex = KErrNotFound; sl@0: for (TInt i=0; i