--- 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;