diff -r 9f56a4e1b8ab -r 08e69e956a8c uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp --- a/uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp Mon Mar 15 12:41:34 2010 +0200 +++ b/uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp Wed Mar 31 21:59:52 2010 +0300 @@ -33,7 +33,7 @@ #include "avkoninternalpskeys.h" // KAknIdleAppWindowGroupId #include #include -#include +#include #include #include #include @@ -107,7 +107,7 @@ const TInt KKeyEventICodeThreshold = 0x001f; const TInt KMaxLanguageCodeLength = 6; // 5 digits + separator - +const TInt KRemoveBlankDelay = 200000; // 0.2s _LIT(KEikSrvUIResFileName, "z:\\resource\\eiksrvui.rsc"); _LIT_SECURITY_POLICY_PASS(KPassReadPolicy); @@ -172,7 +172,8 @@ delete iMMCUnlock; delete iIdler; iEikSrv.Close(); // this shouldn't be connected here anyway - delete iPtiEngine; + delete iPtiEngine; + iAlfClient.Close(); } _LIT(KProductSpecificHalFile, "z:\\system\\data\\ProductSpecificHalParams.txt"); @@ -856,12 +857,26 @@ } } -void CAknCapAppServerAppUi::BlankScreenL(TBool aBlank, TBool aToForeground) +TInt CAknCapAppServerAppUi::RemoveBlankCallBack( TAny* aThis ) + { + static_cast( aThis )->DoRemoveBlank(); + return EFalse; + } + +void CAknCapAppServerAppUi::BlankScreenL(TBool aBlank, TBool /* aToForeground */) { if (aBlank) { if (++iBlankWinRefCount == 1) { + delete iRemoveBlankCallBack; + iRemoveBlankCallBack = NULL; + + // We are ignoring the foreground parameter because we only have one + // type of blanking behaviour in AlfClient. Act as if ETrue + iAlfClient.BlankScreen(ETrue); + iForegroundBlankScreen = ETrue; // always as if foreground blanking +/* ASSERT(!iBlankWin); if (aToForeground) { @@ -873,16 +888,30 @@ } iBlankWin = CAknServBlankWin::NewL(iBackdropWindowGroup, iStatusPane); iForegroundBlankScreen = aToForeground; +*/ } } else if (--iBlankWinRefCount <= 0) { iBlankWinRefCount = 0; - if (iForegroundBlankScreen) + + // Blanking IPC is delayed or restarted + delete iRemoveBlankCallBack; + iRemoveBlankCallBack = NULL; + iRemoveBlankCallBack = CPeriodic::NewL(CActive::EPriorityLow); + + iRemoveBlankCallBack->Start( + KRemoveBlankDelay, + KRemoveBlankDelay, + TCallBack(RemoveBlankCallBack, this)); + + +/* if (iForegroundBlankScreen) { + */ #ifdef RD_UI_TRANSITION_EFFECTS_LAYOUT_SWITCH + /* CWsScreenDevice* screen = iEikonEnv->ScreenDevice(); - /* RWsSession& ws = iEikonEnv->WsSession(); TInt wgId = ws.GetFocusWindowGroup(); CApaWindowGroupName* wgName = CApaWindowGroupName::NewL(ws, wgId); @@ -896,18 +925,28 @@ // AknTransEffect::GfxTransParam( KTfxServerUid ) // ); - GfxTransEffect::EndFullScreen(); +// GfxTransEffect::EndFullScreen(); #endif - iBackdropWindowGroup.SetOrdinalPosition(1, ECoeWinPriorityNormal); - } +/* iBackdropWindowGroup.SetOrdinalPosition(1, ECoeWinPriorityNormal); + } delete iBlankWin; iBlankWin = 0; +*/ iForegroundBlankScreen = EFalse; } } +void CAknCapAppServerAppUi::DoRemoveBlank() + { + RDebug::Print( _L("CAknCapAppServerAppUi::DoRemoveBlank")); + iAlfClient.BlankScreen(EFalse); + delete iRemoveBlankCallBack; + iRemoveBlankCallBack = NULL; + } + void CAknCapAppServerAppUi::SwapLayoutSwitchBlankScreenL() { + /* if (iBlankWin) { if (!iForegroundBlankScreen) @@ -920,6 +959,7 @@ delete iBlankWin; iBlankWin = newBlankWin; } + */ } TBool CAknCapAppServerAppUi::IsDisplayingForegroundBlankScreen() const