diff -r 000000000000 -r 5d03bc08d59c windowing/windowserver/tcsc/cwsgcecscbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/tcsc/cwsgcecscbase.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,181 @@ +// Copyright (c) 2008-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: +// + +#ifndef TCWGCECSCBASE_H_ +#define TCWGCECSCBASE_H_ + +#include +#include +#include "surfaceutility.h" +#include + +class TPerfProperties +{ +public: + TBool GetValue(TUint aKey); + void PrintAllL(CTestFixture& aLogger); + TBool ResetValue(TUint aKey); + void UpdateAll(); + void ResetAll(); +private: +#ifdef GCE_BACKEND_PROFILING + TInt iValue[EPerfLastKey]; + TInt iPrevValue[EPerfLastKey]; + const static TBuf<100> propertyKeysTxt[EPerfLastKey]; +#endif +}; + +class CWsGceCscBase: public CTestFixture +{ + +public: + template + class SafePointer + { + public: + SafePointer(LoggerOwner* aOwner,Referee* aReferee=NULL): + iOwner(aOwner), iReferee(aReferee) + {} + Referee* operator=(Referee* aReferee) + { + return iReferee=aReferee; + } + Referee*& operator()() + { + return iReferee; + } + Referee* operator->() + { + if (iReferee==NULL) + { + iOwner -> INFO_PRINTF1(_L("Tried to dereference a pointer that is null!")); + User::Panic(_L("null pointer"),__LINE__); + } + return iReferee; + } + private: + LoggerOwner* iOwner; + Referee* iReferee; + }; + +public: + CWsGceCscBase(); + virtual ~CWsGceCscBase(); + virtual void SetupL(); + virtual void TearDownL(); + virtual void TearDownFromDeleteL(); + +protected: + typedef TBuf TTestName; + + class TPostTestCleanup + { + protected: + TPostTestCleanup() {} + public: + CSurfaceUtility* iSharedUtility; + TBool iCleanedUpOnExit; + }; + + + typedef enum TOptimizationLevel + { + EDisable, + EDetectFrontmostFullScreenOpaqueLayer, + EMaximum, + } TOptimizationLevel; + + +protected: + void SetCompositionMode(RWindow& aWindow, TDisplayMode aMode); + + TBool Compare(CFbsBitmap& aBitmap1, CFbsBitmap& aBitmap2); + + void ConstructOpaqueWindowLC(RWindow& aWindow, + const TRgb& aColor, + TInt aPos, + const TPoint& aPoint, + const TSize& aSize); + + void ConstructOpaqueWindowL(RWindow& aWindow, + const TRgb& aColor, + TInt aPos, + const TPoint& aPoint, + const TSize& aSize); + + void SetBackgroundColorWindow(RWindow& aWindow, const TRgb& aColor); + + void ConstructOpaqueSurfacedWindowLC(RWindow& aWindow, + const TRgb& aColor, + TInt aPos, + const TPoint& aPoint, + const TSize& aSize, + TSurfaceId& aSurfaceID); + void ConstructOpaqueSurfacedWindowL(RWindow& aWindow, + const TRgb& aColor, + TInt aPos, + const TPoint& aPoint, + const TSize& aSize, + const TSurfaceId& aSurfaceID); + +protected: + inline TInt ObjIndScr(TInt aScreen,TInt aWin=0,TInt aLayer=0,TInt aExtra=0); + template // DataType may be TSurfaceId, TInt,TRect, TSurfaceConfiguration (not TRegion) + TInt DebugInfo(TWsDebugInfoFunc aFunction, TInt aObjectIndex, TDes8& aHostBuffer,const DataType*&aReturnedObject)const + { + return DebugInfo(aFunction,aObjectIndex,aHostBuffer,(const void*&)aReturnedObject,sizeof(DataType)); + } + TInt DebugInfo(TWsDebugInfoFunc aFunction, + TInt aParam, + TDes8& aHostBuffer, + const void*&aReturnedObject, + TInt aObjectSize)const; + void TefUnitFailLeaveL(); + static void Pause(TInt aMilliseconds=200); + TBool GCEIsSupported() const; + static TBool GCEIsSupportedStatic(); + static TPostTestCleanup& PostTestCleanupInstance(); + +protected: + TBool iDoTearDown; + RWsSession iSession; + RWindowGroup iGroup; + CWsScreenDevice* iScreenDevice; + CWindowGc* iGc; + TInt iWindowHandle; + TBool iTransparencyEnabled; + TRgb iRed, iGreen, iBlue, iCyan, iMagenta, iYellow, iWhite; + TDisplayMode iDisplayMode; + SafePointer iUtility; + static const TInt KMaxInfoLines=5; + TTestName iTestInfo[KMaxInfoLines]; + TTestName iTestName; + static const TUidPixelFormat KSurfaceFormat = EUidPixelFormatXRGB_8888; + static const TInt KBytesPerPixel = 4; // Four bytes per pixel for the format above. + TPerfProperties iProperties; +}; + +inline TInt CWsGceCscBase::ObjIndScr(TInt aScreen, + TInt aWin, + TInt aLayer, + TInt aExtra) + { + return (aScreen<