windowing/windowserver/tauto/tdirecta.h
changeset 0 5d03bc08d59c
equal deleted inserted replaced
-1:000000000000 0:5d03bc08d59c
       
     1 // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @test
       
    19  @internalComponent - Internal Symbian test code
       
    20 */
       
    21 
       
    22 #ifndef __TDIRECTA_H__
       
    23 #define __TDIRECTA_H__
       
    24 
       
    25 #include "AUTO.H"
       
    26 #include <e32msgqueue.h>
       
    27 #include <time.h>
       
    28 #include "TGraphicsHarness.h"
       
    29 
       
    30 //#define LOGGING
       
    31 
       
    32 class CColorAnimation;
       
    33 class CScrollText;
       
    34 class CScrollingTextDrawer;
       
    35 class CDirectScreenAccessOld;
       
    36 
       
    37 
       
    38 struct TDirectThreadParam
       
    39 	{
       
    40 	TRect iRect;
       
    41 	TInt iScreenNumber;
       
    42 	TBool iIsInFront;
       
    43 	};
       
    44 
       
    45 class MAnimCallBacks
       
    46 	{
       
    47 public:
       
    48 	virtual void LogLeave(TInt aErr)=0;
       
    49 	virtual void Fail()=0;
       
    50 	virtual void Finished(TInt aId)=0;
       
    51 	virtual TDisplayMode DisplayMode(TInt aId)=0;
       
    52 	virtual TRgb BrushColorL(TInt aId,TInt& aColor,TBool& aFinished)=0;
       
    53 	virtual TInt TimerInterval(TInt aId)=0;
       
    54 	virtual void FailedReStart(TInt aId,TInt aReason)=0;
       
    55 	virtual TInt SlowStopping(TInt aId,TInt aCount)=0;
       
    56 	virtual void Log(const TText8* aFile, TInt aLine, TInt aSeverity,const TDesC& aString)=0;
       
    57 public:
       
    58 	CTBlankWindow* iCallBackWin;
       
    59 	};
       
    60 
       
    61 class CTDirect : public CTWsGraphicsBase, public MAbortDirectScreenAccess, public MAnimCallBacks
       
    62 	{
       
    63 public:
       
    64 	enum
       
    65 		{
       
    66 		eDirectNumFrames=10
       
    67 		};
       
    68 	enum
       
    69 		{
       
    70 		eDirectControlSem=0x01,
       
    71 		eDirectWindowSem=0x02,
       
    72 		eFontSet=0x04,
       
    73 		eMultiAnim=0x08,
       
    74 		};
       
    75 public:
       
    76 	CTDirect(CTestStep* aStep);
       
    77 	~CTDirect();
       
    78 	void ConstructL();
       
    79 	TBool DrawFrame();
       
    80 	TBool Restart();
       
    81 	void ChangeToNextScreenModeL();
       
    82 	void ChangeScreenScale();
       
    83 	//The Tests
       
    84 	TestState AnimateWindowL();
       
    85 	TestState AnimationDiesL();
       
    86 	TestState PackagingClassL();
       
    87 	TestState MultipleL();
       
    88 	TestState FailCodesL();
       
    89 	TestState ScrolingText1L();
       
    90 	TestState RClassL();
       
    91 	TestState ScrolingText2L();
       
    92 	TestState ScrolingText3L();
       
    93 	TestState ScrolingText4L();
       
    94 	TestState DefectFix_KAA_5J3BLW_L();
       
    95 	TestState KillAnimationL();
       
    96 	TestState DSAWithScreenModeOffset1L();
       
    97 	TestState DSAWithScreenModeOffset2L();
       
    98 	TestState WindowPoistionRelativeToScreenL();
       
    99 	TestState ScreenModeScalingTestL();
       
   100 	TestState ScreenModeTestForScalingL();
       
   101 	TestState MultipleDSAsOnSameWindowL();
       
   102 	TestState TemporaryDeadlockL();
       
   103 	TestState RegionTrackingOnlyNotificationsL(TUint aId);
       
   104 	TestState MixDsaAndRegionTrackingOnlyL(TBool aWhoExitsLast);
       
   105 	TestState TryDifferentSupportedModesL();
       
   106 protected:
       
   107 //from 	CTGraphicsStep
       
   108 	virtual void RunTestCaseL(TInt aCurTestCase);
       
   109 private:
       
   110 	void ConstrucBlankWindowL();
       
   111 	void ScanTypeFacesL();
       
   112 	void InitialiseAnimationL();
       
   113 	void DestroyAnimation();
       
   114 	void ResetScreenSizeMode();
       
   115 	void StartDirect();
       
   116 	void SignalWindow();
       
   117 	void ModeSwitch();
       
   118 	void ScrolingTextL(TInt aId,TRect aWinRect,TBool aStartThread,TInt aScreenMode=0);
       
   119 	void AnimTestL(TInt aId,TRect aWinRect,CTWinBase& aParent);
       
   120 	//Pure virtual function from MAbortDirectScreenAccess
       
   121 	void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
       
   122 	//Pure virtual functions from MAnimCallBacks
       
   123 	void LogLeave(TInt aErr);
       
   124 	void Fail();
       
   125 	void Finished(TInt aId);
       
   126 	void DeleteMoveWindow();
       
   127 	void DeleteScroll();
       
   128 	TDisplayMode DisplayMode(TInt aId);
       
   129 	TRgb BrushColorL(TInt aId,TInt& aColor,TBool& aFinished);
       
   130 	TInt TimerInterval(TInt aId);
       
   131 	void FailedReStart(TInt aId,TInt aReason);
       
   132 	TInt SlowStopping(TInt aId,TInt aCount);
       
   133 	void Log(const TText8* aFile, TInt aLine, TInt aSeverity,const TDesC& aString);
       
   134 	void SetScreenMode(TInt aMode,TPixelsAndRotation& aPixelsAndRotation);
       
   135 	void CreateAnimForScreenModeL(TInt aAnimIndex,CTWinBase& aParent,TRect aRect,TInt aId);
       
   136 	void BlankTopClientWindowL(CTBlankWindow& aBlankWindow,TRect aRect);
       
   137 	void TestDifferentOriginAndScaleL(TSizeMode &aMode,TPoint aOrigin);
       
   138 	void CheckForTemporaryDeadlock();
       
   139 private:
       
   140 	CProcess* iProcess;
       
   141 	CProcess* iMoveWin;
       
   142 	RSemaphore iControlSem;
       
   143 	RMsgQueueBase iControlQueue;
       
   144 	RSemaphore iWinSem;
       
   145 	TRequestStatus iThreadStatus;
       
   146 	TUint iFlags;
       
   147 	CTBlankWindow* iWin;
       
   148 	CTBlankWindow* iWin2;
       
   149 	CFbsScreenDevice* iScrDev;
       
   150 	CFbsBitGc* iGc;
       
   151 	CFont* iFont;
       
   152 	CPeriodic* iTimer;
       
   153 	CIdle* iRestart;
       
   154 	CDirectScreenAccessOld* iDirect;
       
   155 	RRegion* iDrawingRegion;
       
   156 	TSize iScrSize;
       
   157 	TRect iDrawRect;
       
   158 	TInt iDrawHeight;
       
   159 	TInt iFrameNo;
       
   160 	TInt iLastTextWidth;
       
   161 	TInt iLastMaxTextWidth;
       
   162 	TInt iFrameToSignalAfter;
       
   163 	TBool iDelay;
       
   164 	TBool iCancelNext;
       
   165 	TBool iWindowDead;
       
   166 	CColorAnimation* iAnim;
       
   167 	CColorAnimation* iAnims[13];
       
   168 	TInt iCount;
       
   169 	CScrollText* iScroll;
       
   170 	TInt iCycles;
       
   171 	TScreenModeEnforcement iModeBackup;
       
   172 	TThreadStartUp iFirstFunction;
       
   173 	TInt iNumThreadHandles;
       
   174 	CTBlankWindow* iBlankTopClientWin1;
       
   175 	CTBlankWindow* iBlankTopClientWin2;
       
   176 	CPeriodic* iChangeScreenModeTimer;
       
   177 	TInt iCurrentMode;
       
   178 	TInt iNumOfModes;
       
   179 	TPoint iCurrentScreenModeOrigin;
       
   180 	TSize iCurrentScreenModeScale;
       
   181 	TInt iNumAnimation;
       
   182 	TSizeMode iModeData;
       
   183 	CPeriodic* iScreenModeTimer;
       
   184 	TInt iIsScalingSupported;
       
   185 	TInt iNumOfCallBack;
       
   186 	TBool iTestJustFailed;
       
   187 	TBool iTestJustCompleted;
       
   188 	TInt iState;
       
   189 	TBool iNextFrameFinished;
       
   190 	TBool iPackagingFinished;
       
   191 	TBool iTimerRunning;
       
   192 	};
       
   193 
       
   194 class CDirectScreenAccessOld : public CActive
       
   195 	{
       
   196 public:
       
   197 	static CDirectScreenAccessOld* NewL(RWsSession& aWs,MAbortDirectScreenAccess& aAborter);
       
   198 	~CDirectScreenAccessOld();
       
   199 	TInt Request(RRegion*& aRegion, RWindowBase& aWindow);
       
   200 private:
       
   201 	inline CDirectScreenAccessOld(RWsSession& aWs,MAbortDirectScreenAccess& aAborter)
       
   202 		: CActive(RDirectScreenAccess::EPriorityVeryHigh), iDirectAccess(aWs), iAborter(aAborter) {}
       
   203 	void ConstructL();
       
   204 	//Pure virtual functions from CActive
       
   205 	void DoCancel();
       
   206 	void RunL();
       
   207 private:
       
   208 	RDirectScreenAccess iDirectAccess;
       
   209 	MAbortDirectScreenAccess& iAborter;
       
   210 	TBool iAborting;
       
   211 	};
       
   212 
       
   213 class CColorAnimation : public CBase, public MDirectScreenAccess
       
   214 	{
       
   215 public:
       
   216 	enum
       
   217 		{
       
   218 		eStopNow=EFalse,
       
   219 		eStopDelayed=ETrue,
       
   220 		eAbort=2,
       
   221 		eAbortAll,
       
   222 		};
       
   223 public:
       
   224 	static TInt DrawColorL(TAny* aAnimation);
       
   225 	static TInt IdlingL(TAny* aAnimation);
       
   226 	static CColorAnimation* NewL(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack,CTWinBase& aParent,TRect aExtent,TBool aStart,TBool aRegionTrackingOnly = EFalse);
       
   227 	inline CColorAnimation(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack) :iId(aId), iCallBack(aCallBack), iScreenNumber(aScreenNumber) {}
       
   228 	~CColorAnimation();
       
   229 	void ConstructL(CTWinBase& aParent,TRect aExtent,TBool aRegionTrackingOnly,TInt aTypeWindow=0,TInt aSingleWinForMultipleDSA=0);
       
   230 	void StartL(TBool aChildWindow=EFalse);
       
   231 	void StartOrPanic();
       
   232 	void Stop();
       
   233 	void BringWindowToFront();
       
   234 	void ChangeModeL(TDisplayMode aMode);
       
   235 	TBool inline IsTimerActive() {return iTimer->IsActive();}
       
   236 	inline MAnimCallBacks& CallBack() { return iCallBack; }
       
   237 	TPoint AbsoluteWindowPosition(TInt aWindowId=0);
       
   238 	inline CDirectScreenAccess* GetDrawer();
       
   239 	void FinishTest();
       
   240 	TBool TestGcAndScreenDeviceValues();
       
   241 	//inline TBool IsReadyToAbort(){return (iDrawer->iStatus!=KRequestPending);}
       
   242 protected:
       
   243 	void DrawColorL();
       
   244 	void IdlingL();
       
   245 	/*pure virtual function from MAbortDirectScreenAccess*/
       
   246 	void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
       
   247 	/*pure virtual function from MDirectScreenAccess*/
       
   248 	void Restart(RDirectScreenAccess::TTerminationReasons aReason);
       
   249 private:
       
   250 	TInt iId;
       
   251 	CTBlankWindow* iWindow;
       
   252 	CTBlankWindow* iWindow2;
       
   253 	TSize iWinSize;
       
   254 	CDirectScreenAccess* iDrawer;
       
   255 	CPeriodic* iTimer;
       
   256 	MAnimCallBacks& iCallBack;
       
   257 	TInt iColor;
       
   258 	TInt iCount;
       
   259 	TUint iIdling;
       
   260 	TInt iScreenNumber;
       
   261 	TInt iSingleWinForMultipleDSA;
       
   262 	TBool iRegionTrackingOnly;
       
   263 	};
       
   264 
       
   265 class CScrollingTextDrawer : public CBase
       
   266 	{
       
   267 public:
       
   268 	static CScrollingTextDrawer* NewL(TInt aScreenNumber,CFbsScreenDevice*& aDevice,CFbsBitGc& aGc);
       
   269 	~CScrollingTextDrawer();
       
   270 	inline void SetScrollJump(TInt aJump) {iJump=aJump;}
       
   271 	void SetBottomOfTest(TInt aBottom);
       
   272 	void Scroll();
       
   273 private:
       
   274 	inline CScrollingTextDrawer(CFbsScreenDevice*& aDevice,CFbsBitGc& aGc) : iDevice(aDevice), iGc(&aGc) {}
       
   275 	void ConstructL(TInt aScreenNumber);
       
   276 	void CreateFontL();
       
   277 private:
       
   278 	CFbsScreenDevice*& iDevice;
       
   279 	CFbsScreenDevice* iFontDevice;
       
   280 	CFbsBitGc* iGc;
       
   281 	CFont* iFont;
       
   282 	TBuf<32> iText;
       
   283 	TRect iDrawRect;
       
   284 	TInt iDrawHeight;
       
   285 	TInt iCharWidth;
       
   286 	TInt iFirstChar;
       
   287 	TInt iJump;
       
   288 #if defined(LOGGING)
       
   289 	RWsSession iWs;
       
   290 #endif
       
   291 	};
       
   292 
       
   293 class CScrollText : public CBase, public MDirectScreenAccess
       
   294 	{
       
   295 public:
       
   296 	static TInt DrawText(TAny* aAnimation);
       
   297 	static CScrollText* NewL(TInt aScreenNumber,TInt aId,CTWindowGroup& aParent,TInt aScrollJump,TBool aStart=EFalse);
       
   298 	inline CScrollText(TInt aId,TInt aScrollJump,TInt aScreenNumber) :iId(aId), iScrollJump(aScrollJump), iScreenNumber(aScreenNumber) {}
       
   299 	~CScrollText();
       
   300 	void ConstructL(CTWindowGroup& aParent);
       
   301 	void StartL();
       
   302 	void Stop();
       
   303 	void ContinueL();
       
   304 	inline TBool IsRunning() {return iTimer->IsActive();}
       
   305 	inline void SetCountDown(TInt aCountDown) {iAbortCountDown=aCountDown; iCounting=ETrue;}
       
   306 	inline void SetBottomOfTest(TInt aBottom) {iTextDraw->SetBottomOfTest(aBottom);}
       
   307 private:
       
   308 	void ScrollText();
       
   309 	void DoContinueL();
       
   310 	/*pure virtual function from MAbortDirectScreenAccess*/
       
   311 	void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
       
   312 	/*pure virtual function from MDirectScreenAccess*/
       
   313 	void Restart(RDirectScreenAccess::TTerminationReasons aReason);
       
   314 private:
       
   315 	TInt iId;
       
   316 	CTBlankWindow* iWindow;
       
   317 	TSize iWinSize;
       
   318 	CDirectScreenAccess* iDrawer;
       
   319 	CScrollingTextDrawer* iTextDraw;
       
   320 	CPeriodic* iTimer;
       
   321 	TInt iScrollJump;
       
   322 	TBool iCounting;
       
   323 	TInt iAbortCountDown;
       
   324 	TInt iScreenNumber;
       
   325 	};
       
   326 
       
   327 	
       
   328 /**
       
   329  A simple class based on CScrollText constructs a blank window that has
       
   330  a blank window child, used for functional coverage testing of CWsClientWindow
       
   331  */
       
   332 class CWindowWithChild : public CBase, public MDirectScreenAccess
       
   333 	{
       
   334 public:
       
   335 	static CWindowWithChild* NewL(TInt aScreenNumber, CTWindowGroup& aParent,TBool aStart=EFalse);
       
   336 	inline CWindowWithChild(TInt aScreenNumber) : iScreenNumber(aScreenNumber) {}
       
   337 	~CWindowWithChild();
       
   338 	void ConstructL(CTWindowGroup& aParent);
       
   339 	void StartL();
       
   340 	void Stop();
       
   341 	void ContinueL();
       
   342 	inline TBool IsRunning() {return iRunning;}
       
   343 	void PerformCoverageCalls();
       
   344 	RWindow *ChildWindow()    {return iChildWindow->Win();}
       
   345 private:
       
   346 	void DoContinueL();
       
   347 	/*pure virtual function from MAbortDirectScreenAccess*/
       
   348 	void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
       
   349 	/*pure virtual function from MDirectScreenAccess*/
       
   350 	void Restart(RDirectScreenAccess::TTerminationReasons aReason);
       
   351 private:
       
   352 	CTBlankWindow* iWindow;
       
   353 	CTWin * iChildWindow;
       
   354 	TSize iWinSize;
       
   355 	CDirectScreenAccess* iDrawer;
       
   356 	TInt iScreenNumber;
       
   357 	TBool iRunning;
       
   358 	};
       
   359 	
       
   360 	
       
   361 class CWsBase : public CBase
       
   362 	{
       
   363 public:
       
   364 protected:
       
   365 	~CWsBase();
       
   366 	void ConstructL(TInt aScreenNumber,TInt aHandle);
       
   367 	void CreateBlankWindowL(RBlankWindow& iWin,TInt aHandle);
       
   368 protected:
       
   369 	RWsSession iWs;
       
   370 	CWsScreenDevice *iScrDev;
       
   371 	RWindowGroup iGroup;
       
   372 	};
       
   373 
       
   374 class CAnimating : public CWsBase, public MAbortDirectScreenAccess
       
   375 	{
       
   376 public:
       
   377 	static TInt StartLC(TAny* aScreenNumber);
       
   378 	//static CAnimating* NewLC();
       
   379 	void DrawFrame();
       
   380 	/*pure virtual function from MAbortDirectScreenAccess*/
       
   381 	void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
       
   382 private:
       
   383 	void ConstructL(TInt aScreenNumber);
       
   384 	~CAnimating();
       
   385 	void StartAnimatingL();
       
   386 private:
       
   387 	RSemaphore iControlSem;
       
   388 	RMsgQueueBase iControlQueue;
       
   389 	TBool iSemCreated;
       
   390 	RBlankWindow iWindow;
       
   391 	CFbsScreenDevice* iScrDev;
       
   392 	CFbsBitGc* iGc;
       
   393 	TSize iScrSize;
       
   394 	CDirectScreenAccessOld* iDirect;
       
   395 	RRegion* iDrawingRegion;
       
   396 	CPeriodic* iTimer;
       
   397 	TInt iColor;
       
   398 	};
       
   399 
       
   400 class CMoveWindow : public CWsBase
       
   401 	{
       
   402 public:
       
   403 	static TInt StartLC(TAny* aScreenNumber);
       
   404 	static TInt StateChange(TAny* aMoveWin);
       
   405 	static TInt FlipChange(TAny*);
       
   406 	//Call Backs
       
   407 	void MoveWindow();
       
   408 private:
       
   409 	inline static CMoveWindow* Cast(TAny* aMoveWin) {return STATIC_CAST(CMoveWindow*,aMoveWin);}
       
   410 	~CMoveWindow();
       
   411 	void ConstructL(TInt aScreenNumber);
       
   412 	void CreateTimerL();
       
   413 	void StateChange();
       
   414 	void ToggleDisplayMode();
       
   415 	void FlipChange();
       
   416 private:
       
   417 	CPeriodic* iFlipTimer;
       
   418 	CPeriodic* iStateTimer;
       
   419 	CPeriodic* iTimer;
       
   420 	CWsScreenDevice* iDevice;
       
   421 	RBlankWindow iWindow;
       
   422 	TDisplayMode iDisplayMode;
       
   423 	RBackedUpWindow iBackUpWin;
       
   424 	CWindowGc* iGc;
       
   425 	TRect iBounceArea;
       
   426 	TSize iScrSize;
       
   427 	TPoint iTl;
       
   428 	TSize iSize;
       
   429 	TSize iDelta;
       
   430 	TInt iStateCountDown;
       
   431 	TInt iNumOfModes;
       
   432 	TInt iCurrentMode;
       
   433 	};
       
   434 
       
   435 class CBugFixColorAnimation : public CColorAnimation
       
   436 	{
       
   437 public:
       
   438 	static CBugFixColorAnimation* NewL(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack,CTWindowGroup& aParent,TRect aExtent,TBool aStart=EFalse);
       
   439 	~CBugFixColorAnimation();
       
   440 	inline void Started() { iSem.Signal(); }
       
   441 private:
       
   442 	CBugFixColorAnimation(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack);
       
   443 	void ConstructL(CTWindowGroup& aParent,TRect aExtent);
       
   444 private:
       
   445 	/*pure virtual function from MAbortDirectScreenAccess*/
       
   446 	void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
       
   447 	/*pure virtual function from MDirectScreenAccess*/
       
   448 	void Restart(RDirectScreenAccess::TTerminationReasons aReason);
       
   449 private:
       
   450 	CProcess* iThread;
       
   451 	CIdle* iTestFailed;
       
   452 	TRect iAnimRect;
       
   453 	TDirectThreadParam iThreadParam;
       
   454 	RSemaphore iSem;
       
   455 	};
       
   456 
       
   457 class CRegionTrackingOnly : public CColorAnimation
       
   458 	{
       
   459 public:
       
   460 	static CRegionTrackingOnly* NewL(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack,CTWindowGroup& aParent,TRect aExtent,TBool aStart,TBool aOpenWindowInFrontDsa);
       
   461 	void ConstructL(CTWindowGroup& aParent,TRect aExtent,TBool aOpenWindowInFrontDsa);
       
   462 	~CRegionTrackingOnly();
       
   463 	inline void Started() { iSem.Signal(); }
       
   464 private:
       
   465 	CRegionTrackingOnly(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack);
       
   466 	/*Overriding of bases class virtual functions*/
       
   467 	void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
       
   468 	void Restart(RDirectScreenAccess::TTerminationReasons aReason);
       
   469 private:
       
   470 	CProcess* iThread;
       
   471 	TRect iAnimRect;
       
   472 	TBool iExpectedToAbort;	
       
   473 	TDirectThreadParam iThreadParam;
       
   474 	RSemaphore iSem;
       
   475 	};
       
   476 
       
   477 /*CPanicDirect*/
       
   478  class CPanicDirect : public CBase
       
   479  	{
       
   480  public:
       
   481 	static TInt DoTestOnNewScheduler(TInt aInt, TAny* aPtr);
       
   482 	static TInt DoTestOnNewSchedulerL(TInt aInt, TAny* aPtr);
       
   483  private:
       
   484  	inline CPanicDirect() {}
       
   485  	~CPanicDirect();
       
   486  	void ConstructL(TInt aScreenNumber, TInt aInt);
       
   487 	static void DoTestNowL(TInt aInt, TAny* aPtr);
       
   488  	void TestL();
       
   489  	void DoDrawingL();
       
   490 private:
       
   491 	TInt iTestNo;
       
   492 	RWsSession iWs;
       
   493 	CWsScreenDevice* iWsScrDev;
       
   494 	RWindowGroup iGroup;
       
   495 	RBlankWindow iBlankWin;
       
   496 	RDirectScreenAccess iDirect;
       
   497 	TRequestStatus iDirectStatus;
       
   498 	RRegion* iRegion;
       
   499 	RTimer iTimer;
       
   500 	TRequestStatus iTimerStatus;
       
   501 	TBool iDrawingAllowed;
       
   502 	CFbsScreenDevice* iScreenDevice;
       
   503 	CFbsBitGc* iGc;
       
   504 	TDisplayMode iDisplayMode;
       
   505 	CScrollingTextDrawer* iTextDraw;
       
   506 	TInt iCount;
       
   507 	TInt iScreenNumber;
       
   508 	};
       
   509 
       
   510 class CTDirectStep : public CTGraphicsStep
       
   511 	{
       
   512 public:
       
   513 	CTDirectStep();
       
   514 protected:
       
   515 	//from CTGraphicsStep
       
   516 	virtual CTGraphicsBase* CreateTestL();
       
   517 	};
       
   518 
       
   519 _LIT(KTDirectStep,"TDirect");
       
   520 
       
   521 
       
   522 #endif