equal
deleted
inserted
replaced
68 // CScreensaverEngine::~CScreensaverEngine |
68 // CScreensaverEngine::~CScreensaverEngine |
69 // ----------------------------------------------------------------------------- |
69 // ----------------------------------------------------------------------------- |
70 // |
70 // |
71 CScreensaverEngine::~CScreensaverEngine( ) |
71 CScreensaverEngine::~CScreensaverEngine( ) |
72 { |
72 { |
|
73 iAsyncCb.Cancel(); |
73 StopActivityMonitoring( iActivityManagerScreensaver ); |
74 StopActivityMonitoring( iActivityManagerScreensaver ); |
74 DisableSharedDataAndMonitor(); |
75 DisableSharedDataAndMonitor(); |
75 delete iIndicatorArray; |
76 delete iIndicatorArray; |
76 KillTimer( iPreviewTimer ); |
77 KillTimer( iPreviewTimer ); |
77 KillTimer( iExpiryTimer ); |
78 KillTimer( iExpiryTimer ); |
141 // Also not OK to start until system startup has been completed |
142 // Also not OK to start until system startup has been completed |
142 if ( ( !DisplayFlag() ) && ( iSharedDataI->IsSystemStartupComplete() ) ) |
143 if ( ( !DisplayFlag() ) && ( iSharedDataI->IsSystemStartupComplete() ) ) |
143 { |
144 { |
144 if ( !iScreenSaverIsOn ) |
145 if ( !iScreenSaverIsOn ) |
145 { |
146 { |
146 // connect in StartScreenSaver, intercept and capture application |
147 // Activating is done asynchronously to prevent screensaver from |
147 // key event. It makes sure this event will not be received |
148 // flashing quickly in some cases. This flashing happens e.g. when |
148 // by other applictions when screensaver is activated. |
149 // a call is missed and a note is showed about it. |
149 iAknUiServer.ConnectAndSendAppsKeySuppress(ETrue); |
150 iAsyncCb.CallBack(); |
150 iScreenSaverIsOn = ETrue; |
|
151 |
|
152 // Report whether started from Idle BEFORE bringing to foreground |
|
153 iSharedDataI->SetSSStartedFromIdleStatus(); |
|
154 |
|
155 if ( !View()->IsContentlessScreensaver() ) |
|
156 { |
|
157 ScreensaverUtility::BringToForeground(); |
|
158 } |
|
159 |
|
160 SCRLOGGER_WRITE("Model: SS is displaying (BringToForeground)"); |
|
161 |
|
162 // Compress heap while displaying. No longer possible to |
|
163 // compress all heaps (User::CompressAllHeaps() is a no-op) |
|
164 User::Heap().Compress(); |
|
165 |
|
166 DisplayObject(); |
|
167 } |
151 } |
168 else |
152 else |
169 { |
153 { |
170 SCRLOGGER_WRITE("Model: StartScreenSaver(): already on, ignore"); |
154 SCRLOGGER_WRITE("Model: StartScreenSaver(): already on, ignore"); |
171 } |
155 } |
182 // ----------------------------------------------------------------------------- |
166 // ----------------------------------------------------------------------------- |
183 // |
167 // |
184 void CScreensaverEngine::StopScreenSaver() |
168 void CScreensaverEngine::StopScreenSaver() |
185 { |
169 { |
186 SCRLOGGER_WRITE("Stopping Screensaver"); |
170 SCRLOGGER_WRITE("Stopping Screensaver"); |
|
171 iAsyncCb.Cancel(); |
187 |
172 |
188 if ( iSharedDataI->IsKeyguardOn() || iScreenSaverIsPreviewing ) |
173 if ( iSharedDataI->IsKeyguardOn() || iScreenSaverIsPreviewing ) |
189 { |
174 { |
190 StartPauseTimer(); |
175 StartPauseTimer(); |
191 } |
176 } |
494 |
479 |
495 // ----------------------------------------------------------------------------- |
480 // ----------------------------------------------------------------------------- |
496 // CScreensaverEngine::CScreensaverEngine |
481 // CScreensaverEngine::CScreensaverEngine |
497 // ----------------------------------------------------------------------------- |
482 // ----------------------------------------------------------------------------- |
498 // |
483 // |
499 CScreensaverEngine::CScreensaverEngine() |
484 CScreensaverEngine::CScreensaverEngine() : iAsyncCb( CActive::EPriorityLow ) |
500 { |
485 { |
501 |
486 TCallBack callbackFunc( StartSaverCb, this ); |
|
487 iAsyncCb.Set( callbackFunc ); |
502 } |
488 } |
503 |
489 |
504 // ----------------------------------------------------------------------------- |
490 // ----------------------------------------------------------------------------- |
505 // CScreensaverEngine::ConstructL |
491 // CScreensaverEngine::ConstructL |
506 // ----------------------------------------------------------------------------- |
492 // ----------------------------------------------------------------------------- |
870 |
856 |
871 return KErrNone; |
857 return KErrNone; |
872 } |
858 } |
873 |
859 |
874 |
860 |
|
861 // --------------------------------------------------------------------------- |
|
862 // Callback to do the screensaver starting. |
|
863 // --------------------------------------------------------------------------- |
|
864 // |
|
865 TInt CScreensaverEngine::StartSaverCb( TAny* aPtr ) |
|
866 { |
|
867 CScreensaverEngine* self = static_cast<CScreensaverEngine*>( aPtr ); |
|
868 // connect in StartScreenSaver, intercept and capture application |
|
869 // key event. It makes sure this event will not be received |
|
870 // by other applictions when screensaver is activated. |
|
871 self->iAknUiServer.ConnectAndSendAppsKeySuppress(ETrue); |
|
872 self->iScreenSaverIsOn = ETrue; |
|
873 |
|
874 // Report whether started from Idle BEFORE bringing to foreground |
|
875 self->iSharedDataI->SetSSStartedFromIdleStatus(); |
|
876 |
|
877 if ( !self->View()->IsContentlessScreensaver() ) |
|
878 { |
|
879 ScreensaverUtility::BringToForeground(); |
|
880 } |
|
881 |
|
882 SCRLOGGER_WRITE("Model: SS is displaying (BringToForeground)"); |
|
883 |
|
884 // Compress heap while displaying. No longer possible to |
|
885 // compress all heaps (User::CompressAllHeaps() is a no-op) |
|
886 User::Heap().Compress(); |
|
887 |
|
888 self->DisplayObject(); |
|
889 return KErrNone; |
|
890 } |
|
891 |
|
892 |
875 // End of file. |
893 // End of file. |