--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicscomposition/surfaceupdate/tsrc/tsurfaceupdateinteg.h Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,148 @@
+// Copyright (c) 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 - Internal Symbian test code
+*/
+
+
+#ifndef __TSURFACEUPDATEINTEG_H__
+#define __TSURFACEUPDATEINTEG_H__
+
+#include <test/testexecutestepbase.h>
+#include <test/tgraphicsharness.h>
+#include "surfaceupdateserver.h"
+#include "surfaceupdateclient.h"
+#include <graphics/surface.h>
+
+
+class CTWindowGroup;
+class CTWindowTreeNode;
+class CTRedrawHandler;
+class CSurfaceHelper;
+class CTWindow;
+
+/**
+ * Main class for installing a test environment and running test cases.
+ */
+class CTSurfaceUpdateInteg : public CTGraphicsBase
+ {
+public:
+ CTSurfaceUpdateInteg(CTestStep* aStep);
+ ~CTSurfaceUpdateInteg();
+ void ConstructL();
+protected:
+//from CTGraphicsStep
+ virtual void RunTestCaseL(TInt aCurTestCase);
+private:
+ void TestCase1L();
+ void TestCase2L();
+ void TestCase3();
+
+ CTWindowGroup* CreateGroupL(CWsScreenDevice* aScreenDevice);
+ void RegisterWindowL(CTWindowTreeNode* aWindow);
+ TBool CompareAllScreens();
+ TBool Compare(TInt aScreenNumber, const TRect& aRectSrc, CFbsBitmap* aOriginalBitmap);
+ void FillRefBitmap(TRgb aColor);
+private:
+ TInt iNumOfScreens;
+ RWsSession iWs;
+ RSurfaceUpdateSession iSurfaceUpdate;
+
+ RPointerArray <CWsScreenDevice> iWsDevs;
+ RPointerArray <CWindowGc> iGcs;
+
+ RPointerArray <CTWindowGroup> iGroups;
+ RPointerArray <CTWindowTreeNode> iWindows;
+ CTRedrawHandler* iRedrawHandler;
+ CSurfaceHelper* iSurfaceHelper;
+ TSurfaceId iSurface; //doesn't own
+ TSurfaceId iSurfaceAbove; //doesn't own
+ TSurfaceId iSurfaceAbove1; //bigger size, doesn't own
+ TSurfaceId iSurfaceDoubleBuffered; //doesn't own
+ RPointerArray<CFbsBitmap> iBitmaps; //the list of bitmaps where each bitmap corresponds to particular screen
+ CTWindow *iWindowAbove1; //on first screen, doesn't own
+ CTWindow *iWindowAbove11; //on first screen, bigger size, doesn't own
+ CTWindow *iWindowAbove2; //on second screen, doesn't own
+ CTWindow *iWindowSingleBuffured1; //on first screen, doesn't own
+ CTWindow *iWindowSingleBuffured2; //on second screen, doesn't own
+ CTWindow *iWindowDoubleBuffured1; //on first screen, doesn't own
+ CTWindow *iWindowDoubleBuffured2; //on second screen, doesn't own
+
+
+ CFbsBitmap* iRefBitmap; //used for comparison
+ CFbsBitmapDevice* iBitmapDevice;
+ CGraphicsContext* iGraphicsContext;
+ };
+
+class CTSurfaceUpdateIntegStep : public CTGraphicsStep
+ {
+public:
+ CTSurfaceUpdateIntegStep();
+ inline TBool IsScreenCaptureSupported() const;
+
+private:
+ //from CTGraphicsStep
+ virtual CTGraphicsBase* CreateTestL();
+ virtual void TestSetupL();
+ virtual void TestClose();
+private:
+ TBool iScreenCapture; //signifies if screen capture is supported or not
+ };
+
+inline TBool CTSurfaceUpdateIntegStep::IsScreenCaptureSupported() const
+ {
+ return iScreenCapture;
+ }
+
+
+struct TSwitchDisplayAndReleaseBuffer
+ {
+ TInt iBuffer; //buffer for submission
+ TInt iScreen; //screen to be connected/disconnected
+ TSurfaceId iSurfaceId;
+ };
+
+/**
+ * The class executes specified commands in a separate thread.
+ * Will be used when a main thread is blocked and waits for notifications to arrive.
+ */
+class CCommandDispatcher : public CBase
+ {
+public:
+enum CommandName
+ {
+ EDisconnectDisplayAndReleaseBuffer,
+ EConnectDisplayAndReleaseBuffer
+ };
+ CCommandDispatcher(CommandName aCommandName, TAny* aPram) :
+ iCommandName(aCommandName), iParam(aPram){}
+ TInt Start();
+private:
+ static TInt ThreadFunction(TAny*);
+ void ExecuteCommandL();
+private:
+ CommandName iCommandName;
+ TAny* iParam;
+ };
+
+_LIT(KTSurfaceUpdateIntegStep,"TSurfaceUpdateInteg");
+
+
+#endif // __TSURFACEUPDATEINTEG_H__