--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/nonnga/SERVER/wstop.h Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,240 @@
+// Copyright (c) 2003-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:
+// Sets compiler switches to control WSERV's build
+//
+//
+
+#ifndef __WSTOP_H__
+#define __WSTOP_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+#include <w32debug.h>
+#include "w32cmd.h"
+#include "server.h"
+#include "tcursor.h"
+#include "ScrDev.H"
+#include "Direct.H"
+
+/**
+@internalTechnology
+*/
+class CWsRootWindow;
+typedef CDebugLogBase *(*CreateDebugLog)(TBool aIsFirst, TDesC &aParams);
+
+class CWsShellLogon : public CActive
+ {
+public:
+ CWsShellLogon();
+ ~CWsShellLogon();
+ void ConstructL(RFs &aFs);
+ inline TFullName FullName();
+private:
+ void DoCancel();
+ void RunL();
+ void Request();
+private:
+#if defined(__WINS__)
+ RLibrary iLib;
+ RThread iShellThread;
+ RProcess iShellProcess;
+#else
+ RProcess iShell;
+#endif
+ };
+
+class CWsTop
+ {
+ enum {EShellBootModeReboot=0,EShellBootModeNoReboot=1,EShellBootModeExit=2};
+private:
+ class CShellStarter : public CTimer
+ {
+ public:
+ CShellStarter() : CTimer(EPriorityNormal) {CActiveScheduler::Add(this);}
+ void ConstructL() {CTimer::ConstructL();}
+ private:
+ void RunL() { CWsTop::StartShell(); }
+ };
+
+public:
+ static void RunServerL();
+ static void InitStaticsL();
+ static void DeleteStaticsL();
+ static inline CWsWindowGroup *FocusWindowGroup();
+ static CWsClient *FocusWindowGroupOwner();
+
+ static RWsTextCursor *CurrentTextCursor();
+ static void SetCurrentTextCursor(RWsTextCursor *aCurrentTextCursor);
+ static inline void KillForegroundSession();
+//
+ static void TriggerRedraws(CWsRootWindow* aRootWindow);
+ static void ClientDestroyed(const CWsClient *aClient);
+ static void NewSession(const CWsClient *aClient);
+ static inline TBool ShuttingDown();
+ static void StartShell();
+ static void SessionExited(CWsClient *aClient);
+ static void ShellExited();
+ static void Exit();
+ enum TReloadWsIni
+ {
+ EDoReloadWsIni,
+ EDoNotReloadWsIni
+ };
+ static void EnableLogging(TReloadWsIni aSetting = EDoReloadWsIni);
+ static void DisableLogging();
+ static TInt SetSendOffEventsToShell(CWsClient *aClient,const TWsClCmdOffEventsToShell &aData);
+ static void StopWindowGettingOffEvents(CWsWindowBase* aWindow);
+ static void HandleSwitchOff(TInt aEvent,TBool aDoSwitchOff);
+ static inline CScreen* Screen();
+ static inline CScreen* Screen(TInt aScreenId);
+ static inline TInt NumberOfScreens();
+ static void RedrawScreens();
+ static void UpdateAllScreens();
+ static void ClearAllRedrawStores();
+ static void LogCommand(RWsSession::TLoggingCommand aCommand);
+ static inline RTimer& Timer();
+ static void StateDump();
+ static void SetCurrentFocusScreen(CScreen* aScreen);
+ static inline CScreen* CurrentFocusScreen();
+ static TInt SetCurrentFocusScreen(TInt aScreenNo);
+ static inline CWindowServer* WindowServer();
+ static void SetCheckHeapOnDisconnectClient(const CWsClient* aClient);
+ static void SetCheckHeapOnDisconnectMode(TWsCheckHeapOnDisconnectMode aCheckHeapOnDisconnectMode);
+ static TInt FetchCheckHeapResult();
+ static TBool NeedsHeapCheckAndRestart(TInt aStartHeapCount);
+ static TBool ReleaseMemory();
+ static inline TBool IsFadeEnabled();
+ static inline TBool FinishEveryFlush();
+ static TBool MultiFocusPolicy();
+
+private:
+ static void InitLogging();
+ static void InitScreenL( TInt aScreenNumber) ;
+
+private:
+// Data
+ static CShellStarter *iShellStarter;
+ static CWindowServer *iServer;
+ static RLibrary iDebugLib;
+ static CWsShellLogon *iShell;
+ static const CWsClient *iShellClient;
+ static TBool iPreviousShellClient;
+ static TInt iShellBootMode;
+ static TBool iShuttingDown;
+ static TBool iIsFirstLog;
+ static CWsWindowBase *iWindowToSendOffEventsTo;
+ static CArrayPtrFlat<CScreen>* iScreens ;
+ static CScreen* iCurrentFocusScreen;
+ static TInt iNumberOfScreens ;
+ static RTimer iTimer;
+ static TBool iIgnoreSwitchOffEvent;
+ static TBool iFadeEnabled;
+ static TBool iFinishEveryFlush;
+ static TBool iMultiFocusPolicy;
+ static const CWsClient* iTriggerHeapCheckOnClientExit;
+ static TWsCheckHeapOnDisconnectMode iHeapCheckMode;
+ static TInt iCheckHeapResult;
+ static TBool iDoHeapCheckAndRestart;
+ };
+
+NONSHARABLE_CLASS(CWsActiveScheduler): public CActiveScheduler, public MWsActiveSchedulerDebug
+ {
+public:
+ static CWsActiveScheduler* Static();
+ CWsActiveScheduler();
+ ~CWsActiveScheduler();
+ void PrepareDraw();
+ void CancelPrepare();
+ void StartDraw();
+ void StopDraw(TInt aPixelsUpdated);
+ void DrawStats(TInt& aUpdatesPerSecond,TInt64& aPixelsPerSecond,TInt aWindowInSeconds) const;
+ void WaitForAnyRequest();
+ void Error(TInt aError) const;
+ void AccumReclaimedIdleTime(TInt64 aMicroSeconds);
+ TInt64 ReclaimedIdleTime() const { return iReclaimedIdleTime; }
+ TInt64 Requests() const { return iRequests; }
+ TInt64 Errors() const { return iErrors; }
+ virtual TInt64 Draws() const { return iDraws; }
+ virtual TInt64 Total() const { return iTotal; }
+ virtual TInt64 Preparing() const { return iPreparing; }
+ virtual TInt64 Drawing() const { return iDrawing; }
+ virtual TInt64 Idle() const { return iIdle; }
+private:
+#ifdef _DEBUG
+ enum TState
+ {
+ ENormal,
+ EPreparingDraw,
+ EDrawing,
+ EDrawn
+ };
+ TState iState;
+#endif
+ // request stats
+ TInt64 iRequests;
+ mutable TInt64 iErrors;
+ TInt64 iDraws;
+ TTime iRun;
+ TTime iRunDraw;
+ TInt64 iTotal;
+ TInt64 iPreparing;
+ TInt64 iDrawing;
+ TInt64 iIdle;
+ TInt64 iReclaimedIdleTime;
+ //TBool iPaused;
+ // pixels-per-second stats
+ NONSHARABLE_STRUCT(TSample)
+ {
+ TTime iStart;
+ TUint64 iDuration;
+ TUint32 iPixels;
+ };
+ TInt iFastCounterFreq;
+ TUint iNumSamples;
+ TUint iCurrent;
+ TSample* iData;
+ };
+
+
+//
+// inlines //
+//
+
+//
+// CWsTop
+//
+inline TBool CWsTop::ShuttingDown()
+ {return(iShuttingDown);}
+inline CWsWindowGroup *CWsTop::FocusWindowGroup()
+ {return(iCurrentFocusScreen->FocusWindowGroup());}
+inline void CWsTop::KillForegroundSession()
+ {iCurrentFocusScreen->KillForegroundSession();}
+inline CScreen* CWsTop::Screen()
+ {return CWsTop::Screen( 0 ) ;}
+inline CScreen* CWsTop::Screen(TInt aScreen)
+ {return (*iScreens)[aScreen];}
+inline TInt CWsTop::NumberOfScreens()
+ {return iNumberOfScreens;}
+inline CScreen* CWsTop::CurrentFocusScreen()
+ {return iCurrentFocusScreen;}
+inline RTimer& CWsTop::Timer()
+ {return iTimer;}
+inline CWindowServer* CWsTop::WindowServer()
+ {return iServer;}
+inline TBool CWsTop::IsFadeEnabled()
+ {return iFadeEnabled;}
+inline TBool CWsTop::FinishEveryFlush()
+ {return iFinishEveryFlush;}
+#endif