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