diff -r 46927d61fef3 -r 3ac8bf5c5014 uiacceltk/hitchcock/backgroundanim/src/bganimhost.cpp --- 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;