diff -r e8d784ac1a4b -r fc25e03508fd src/screensaverctrlnone.cpp --- a/src/screensaverctrlnone.cpp Wed Sep 01 12:30:40 2010 +0100 +++ b/src/screensaverctrlnone.cpp Tue Sep 14 21:20:26 2010 +0300 @@ -29,6 +29,10 @@ const TInt KDisplayOff = 0; const TInt KDisplayOn = 1; + +const TInt KTimerDelay = 60*1000*1000; // 60 seconds +const TInt KTimerInterval = KTimerDelay; + // ----------------------------------------------------------------------------- // CScreensaverCtrlNone::NewL // ----------------------------------------------------------------------------- @@ -48,6 +52,12 @@ // CScreensaverCtrlNone::~CScreensaverCtrlNone() { + if( iTimer ) + { + iTimer->Cancel(); + delete iTimer; + } + } // ----------------------------------------------------------------------------- @@ -74,7 +84,6 @@ { SCRLOGGER_WRITEF( _L("SCR:CScreensaverCtrlNone::ClearScreen start") ); SwitchDisplayState( KDisplayOn ); - SwitchLights( ESSForceLightsOn ); } @@ -151,7 +160,10 @@ // void CScreensaverCtrlNone::ConstructL() { - CreateWindowL(); + iTimer = CPeriodic::NewL( CActive::EPriorityStandard ); + iTimer->Start( KTimerDelay, KTimerInterval, + TCallBack( CloseDisplayResource,this ) ); + CreateWindowL(); SetRect( iCoeEnv->ScreenDevice()->SizeInPixels() ); ActivateL(); } @@ -191,5 +203,25 @@ } } +// ----------------------------------------------------------------------------- +// CScreensaverCtrlNone::CloseDisplayResource +// ----------------------------------------------------------------------------- +// +TInt CScreensaverCtrlNone::CloseDisplayResource( TAny* aPtr ) + { + SCRLOGGER_WRITEF( _L("CScreensaverCtrlNone::CloseResource()") ); + CScreensaverCtrlNone* ctrl = static_cast( aPtr ); + + if( ctrl && ctrl->Model().ScreenSaverIsOn() && !ctrl->Model().ScreenSaverIsPreviewing() ) + { + ctrl->SwitchDisplayState( KDisplayOff ); + ctrl->SwitchLights( ESSForceLightsOff ); + return KErrNone; + } + else + { + return KErrGeneral; + } + } //End of file