diff -r d8eca2b0590d -r 2e08ef6b6eda src/screensaverengine.cpp --- a/src/screensaverengine.cpp Tue May 11 16:14:23 2010 +0300 +++ b/src/screensaverengine.cpp Tue May 25 12:43:23 2010 +0300 @@ -37,7 +37,7 @@ const TInt KMinPluginSuspensionTime = 500000; // 0.5 sec // Inactivity timeout in seconds when keys locked -const TInt KTimeoutShort = 5; +const TInt KTimeoutShort = 5000000; const TInt KNoPreview = 0; @@ -70,7 +70,6 @@ CScreensaverEngine::~CScreensaverEngine( ) { StopActivityMonitoring( iActivityManagerScreensaver ); - StopActivityMonitoring( iActivityManagerScreensaverShort ); DisableSharedDataAndMonitor(); delete iIndicatorArray; KillTimer( iPreviewTimer ); @@ -187,6 +186,11 @@ { SCRLOGGER_WRITE("Stopping Screensaver"); + if ( !iScreenSaverIsPreviewing && iSharedDataI->IsKeyguardOn() ) + { + StartPauseTimer(); + } + if( iScreenSaverIsOn ) { // disconnect in StopScreenSaver, It makes sure other applications could @@ -563,14 +567,6 @@ iActivityManagerScreensaver->Start( Timeout(), TCallBack( HandleInactiveEventL,this ), TCallBack( HandleActiveEventL, this ) ); - - // Start monitoring activity for screensaver, short timeout - iActivityManagerScreensaverShort - = CUserActivityManager::NewL( CActive::EPriorityUserInput ); - - iActivityManagerScreensaverShort->Start( KTimeoutShort, - TCallBack( HandleInactiveEventShortL, this ), - TCallBack( HandleActiveEventShortL, this ) ); } // ----------------------------------------------------------------------------- @@ -663,6 +659,26 @@ KPreviewTimeout,KPreviewTimeout); } +// ---------------------------------------------------------------------------- +// CScreensaverEngine::StartPauseTimer +// ----------------------------------------------------------------------------- +// +void CScreensaverEngine::StartPauseTimer() + { + KillTimer( iPauseTimer ); + + TRAP_IGNORE( iPauseTimer = CPeriodic::NewL( CActive::EPriorityHigh ) ); + + if ( !iPauseTimer ) + { + HandlePauseTimerExpiry( this ); + return; + } + + iPauseTimer->Start( KTimeoutShort, KTimeoutShort, TCallBack( + HandlePauseTimerExpiry, this ) ); + } + // ----------------------------------------------------------------------------- // CScreensaverEngine::KillTimer // Stops and deletes a timer @@ -693,6 +709,24 @@ return KErrNone; } +// --------------------------------------------------------------------------- +// CScreensaverEngine::HandlePauseTimerExpiry +// --------------------------------------------------------------------------- +// +TInt CScreensaverEngine::HandlePauseTimerExpiry( TAny* aPtr ) + { + CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr); + _this->KillTimer( _this->iPauseTimer ); + + if ( _this->iSharedDataI->IsKeyguardOn() ) + { + SCRLOGGER_WRITE("HandleInactiveEventShortL() starting saver"); + _this->StartScreenSaver( ); + } + + return KErrNone; + } + // ----------------------------------------------------------------------------- // CScreensaverEngine::HandleActiveEventL // ----------------------------------------------------------------------------- @@ -724,34 +758,6 @@ } // ----------------------------------------------------------------------------- -// CScreensaverEngine::HandleActiveEventShortL -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::HandleActiveEventShortL( TAny* aPtr ) - { - SCRLOGGER_WRITE("HandleActiveEventShortL()"); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::HandleInactiveEventShortL -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::HandleInactiveEventShortL( TAny* aPtr ) - { - SCRLOGGER_WRITE("HandleInactiveEventShortL()"); - // Start, if keys are locked and short timeout in use - CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr); - if ( _this->iSharedDataI->IsKeyguardOn() ) - { - SCRLOGGER_WRITE("HandleInactiveEventShortL() starting saver"); - _this->StartScreenSaver( ); - } - - return KErrNone; - } - -// ----------------------------------------------------------------------------- // CScreensaverEngine::HandleSuspendTimerExpiry // ----------------------------------------------------------------------------- // @@ -768,38 +774,6 @@ return KErrNone; } -// --------------------------------------------------------------------------- -// CScreensaverEngine::HandleKeyguardStateChanged -// --------------------------------------------------------------------------- -// -void CScreensaverEngine::HandleKeyguardStateChanged( TBool aEnabled ) - { - if ( aEnabled ) - { - StartScreenSaver(); - } - else - { - StopScreenSaver(); - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CScreensaverEngine::HandleActivateSSChanged( TBool aStart ) - { - if ( aStart ) - { - StartScreenSaver(); - } - else - { - StopScreenSaver(); - } - } - // ----------------------------------------------------------------------------- // CScreensaverEngine::View // -----------------------------------------------------------------------------