windowing/windowserver/tauto/TPANIC.H
author Faisal Memon <faisal.memon@nokia.com>
Fri, 14 May 2010 15:41:33 +0100
branchNewGraphicsArchitecture
changeset 64 5c983aa672ea
parent 0 5d03bc08d59c
permissions -rw-r--r--
Merge 1. Pull in cpp files in the performance enhanced Khronos RI OVG files which are newly added. I've ignored platform-specific cpp files for linux, macosx, and null operating systems because this local solution has its own platform glue (i.e. facility to target Bitmaps but no full windowing support). I've ignored sfEGLInterface.cpp because this is used as a bridge to go from EGL to Nokia's Platsim which offers an EGL service. That's not relevant to this implementation because this is ARM side code, not Intel side. I just left a comment to sfEGLInterface.cpp in case we need to pick up this later on. The current code compiles on winscw. Prior to this fix, the code works on winscw, and can launch the SVG tiger (tiger.exe). That takes about 20 seconds to render. I hope to always be able to show this icon on each commit, and the plan is for the render time to reduce with this series of submissions. On this commit, the tiger renders ok in 20 seconds.


// Copyright (c) 1996-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 __TPANIC_H__
#define __TPANIC_H__

#include <e32std.h>
#include <w32std.h>
#include "../tlib/testbase.h"
#include "AUTO.H"
#include "AUTODLL.H"
#include "TGraphicsHarness.h"

enum TPanicRedrawMode
	{
	EPanicRedrawModeBackedUpWindow,	// Draw to a RBackedUpWindow; no BeginRedraw()/EndRedraw() needed
	EPanicRedrawModeNormalRedraw,	// Draw in a redraw
	EPanicRedrawModeTransRedraw,	// Draw to a window under a transparent window in a redraw
	EPanicRedrawModeInvisRedraw,	// Draw to an invisible window in a redraw
	};

class CTPanic : public CTWsGraphicsBase
	{
public:
	struct TPanicParams
		{
	public:
		TInt iScreen;
		TPanicRedrawMode iRedrawMode;
		TInt iSubTest;
		};
	
	enum TCancelCaptureType
		{
		ECancelCaptureKey,
		ECancelCaptureKeyUpAndDowns,
		ECancelCaptureLongKey
		};
public:
	CTPanic(CTestStep* aStep);
	~CTPanic();
	void ConstructL();
private:
	void TestDeletedParentPanicsL();
	void TestScreenDevicePanicsL();
	void TestGraphicsPanicsL(TClientPanic aExitReason, TInt aIndex, CTPanic::TPanicParams* aPanicParams);
	void TestGraphicsPanicsL();
	void TestGraphicsPanicsL(TPanicRedrawMode aRedrawMode);
	void TestMiscPanicsL();
	void TestComputeModePanicsL();
	void TestCaptureKeyPanicsL();
	void TestEventPanicsL();
	void TestTPtrPanicsL();
	void TestOpcodePanicsL();
	void TestMultiInitPanicL();
	void TestSpritePanicsL();
	void TestMoveToGroupPanicsL();
	void TestHandleReUseL();
	void TestDeleteScreenPanicL();
	void TestWinHandleErrors();
	void TestGetEventErrors();
	void TestUnInitPanicL();
	void TestAlphaBlendingPanicL();
	void TestDoubleConstructionL();
	void TestDoubleConstructionNoPanic();
	void TestSpriteActivatePanicL();
#ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NGA	
	void TestNonRedrawRedrawerL();
#endif	
	void TestMismatchedCaptureCancelPanicL();
	void LogHeapInfo();
protected:
//from 	CTGraphicsStep
	virtual void RunTestCaseL(TInt aCurTestCase);
private:
	TSize iWinSize;
	};

class CTPanicStep : public CTGraphicsStep
	{
public:
	CTPanicStep();
protected:	
	//from CTGraphicsStep
	virtual CTGraphicsBase* CreateTestL();
	};

_LIT(KTPanicStep,"TPanic");

class RUnInitalisedConnect : public RSessionBase
	{
	public:
	TInt Connect(const TDesC &aName, const TVersion &aVersion);
	TInt Send(const TInt aMsg);
	};

#ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NGA
class CNonRedrawWin : public CBase{
	public:
		~CNonRedrawWin();
		static CNonRedrawWin* NewL(RWsSession &aSession, CWindowGc *aGc);
		virtual void Redraw();
		RWsSession &GetSession();
		void Invalidate();
					
	protected:
		CNonRedrawWin(RWsSession &aSession, CWindowGc *aGc);
		void ConstrucL();

		class CRedrawer : public CActive{
			public:
				CRedrawer(CNonRedrawWin* aWd);
				~CRedrawer();		
			private:
				void HandleReDrawEvent();
				void RunL();
				void DoCancel();
				void HandleRedrawEvent();
				
			private:
				CNonRedrawWin* iWd;
		};
			
	private:		
		RWsSession &iSession;
		RWindowGroup iWdGrp;
		RWindow iWd;
		CWindowGc *iGc;
		
		CRedrawer *iRedrawer;			
		
};
#endif

#endif