uiacceltk/hitchcock/backgroundanim/src/bganimhost.cpp
branchRCL_3
changeset 9 3ac8bf5c5014
parent 8 46927d61fef3
child 10 7c5dd702d6d3
--- a/uiacceltk/hitchcock/backgroundanim/src/bganimhost.cpp	Wed Apr 14 16:53:50 2010 +0300
+++ b/uiacceltk/hitchcock/backgroundanim/src/bganimhost.cpp	Tue Apr 27 17:34:42 2010 +0300
@@ -481,6 +481,7 @@
             if (!serr)
                 {
                 iSensorListeners.Append(listener);
+                StartSensorsL();
                 }
             }
         }
@@ -524,7 +525,7 @@
                                      lValOfNoUse);
         if (err == KErrNotFound)
             {
-            iTimer->CallBack(1);
+            iTimer->CallBack(500);
             return;
             }
         }
@@ -600,14 +601,16 @@
     iTimerRunning = EFalse;
     iPlugin->gpuresourcesavailable(0);
     ReleaseWindowSurface(EFalse);
+    StopSensors();
     }
 
 void CBgAnimHost::CompositionTargetVisible()
     {
-    if (iSurfaceInitialized)
+    if (iSurfaceInitialized || iHiddenDueSC)
         {
         // don't bother if we are already in
-        // a correct state..
+        // a correct state, or if we are hidden by
+        // the screensaver
         return;
         }
 
@@ -626,6 +629,7 @@
         iTimer->CallBack(1);
         iTimerRunning = ETrue;
         }
+    TRAP_IGNORE(StartSensorsL());
     }
 
 void CBgAnimHost::HandleScreenSaverEvent()
@@ -635,24 +639,33 @@
     if (scStatus)
         {
         // screensaver is ON
-        if (iTimerRunning)
-            {
-            iTimer->Cancel();
-            iTimerRunning = EFalse;
-            }
+        iHiddenDueSC = ETrue;
+        CompositionTargetHidden();
         }
     else
         {
         // screensaver is OFF
-        if (!iTimerRunning && iSurfaceInitialized)
-            {
-            iTimerRunning = ETrue;
-            iTimer->CallBack(1);
-            }
+        iHiddenDueSC = EFalse;
+        CompositionTargetVisible();
         }
 #endif
     }
 
+void CBgAnimHost::StartSensorsL()
+    {
+    for (TInt count = 0; count < iSensorListeners.Count(); count++)
+        {
+        iSensorListeners[count]->StartListeningL();
+        }
+    }
+    
+void CBgAnimHost::StopSensors()
+    {
+    for (TInt count = 0; count < iSensorListeners.Count(); count++)
+        {
+        iSensorListeners[count]->StopListening();
+        }
+    }
 TInt CBgAnimHost::ScreenSaverCallback(TAny* aPtr)
     {
     CBgAnimHost* me = (CBgAnimHost*) aPtr;