src/screensaverengine.cpp
branchRCL_3
changeset 15 2e08ef6b6eda
parent 14 d8eca2b0590d
child 16 1f307dce3b5a
--- 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
 // -----------------------------------------------------------------------------