--- a/inc/screensaveractivitymanager.h Wed Apr 14 15:58:13 2010 +0300
+++ b/inc/screensaveractivitymanager.h Tue Apr 27 16:38:49 2010 +0300
@@ -30,6 +30,7 @@
TCallBack aInactiveCallback,
TCallBack aActiveCallback);
void SetInactivityTimeout(TTimeIntervalSeconds aInterval);
+ TBool IsMonitoringForActivity();
private:
void RunL();
CScreensaverActivityManager(TInt aPriority);
--- a/src/screensaveractivitymanager.cpp Wed Apr 14 15:58:13 2010 +0300
+++ b/src/screensaveractivitymanager.cpp Tue Apr 27 16:38:49 2010 +0300
@@ -124,3 +124,8 @@
}
}
}
+
+TBool CScreensaverActivityManager::IsMonitoringForActivity()
+ {
+ return ( iState == EStMonForActivity );
+ }
--- a/src/screensaverengine.cpp Wed Apr 14 15:58:13 2010 +0300
+++ b/src/screensaverengine.cpp Tue Apr 27 16:38:49 2010 +0300
@@ -812,7 +812,17 @@
// Start the screensaver, but set the ignore flag in case keylock
// was activated using the side switch. The switch will generate
// activity that must be ignored.
- StartScreenSaver();
+ if ( iActivityManagerScreensaverShort->IsMonitoringForActivity() )
+ {
+ // Inactive state, start immediately
+ StartScreenSaver();
+ }
+ else
+ {
+ // Active state, go to inactive and start.
+ iActivityManagerScreensaverShort->SetInactivityTimeout(0);
+ }
+
iIgnoreNextActivity = ETrue;
iIgnoreActivityResetTimer = CPeriodic::New( EPriorityLow );
--- a/src/screensavershareddatamonitor.cpp Wed Apr 14 15:58:13 2010 +0300
+++ b/src/screensavershareddatamonitor.cpp Tue Apr 27 16:38:49 2010 +0300
@@ -255,7 +255,7 @@
// Prevent fullscreen transition from screensaver on incoming call
CAknTransitionUtils::SetData( KScreensaverCallStateChange, (TAny*)1 );
#endif
-
+ User::ResetInactivityTime();
STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr)->Model().StopScreenSaver();
return KErrNone;
}