diff -r c52421ed5f07 -r a1caeb42b3a3 uifw/ganes/src/HgVgMediaWall.cpp --- a/uifw/ganes/src/HgVgMediaWall.cpp Mon Jun 21 15:57:43 2010 +0300 +++ b/uifw/ganes/src/HgVgMediaWall.cpp Thu Jul 15 18:56:19 2010 +0300 @@ -145,7 +145,7 @@ SetMopParent( aParent ); - SetFlags( EHgVgMediaWallUninitialized ); + SetFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallUninitialized ); } @@ -176,7 +176,7 @@ // EXPORT_C void CHgVgMediaWall::RefreshScreen( TInt aIndex ) { - ClearFlags(EHgVgMediaWallDrawToWindowGC); + if( !iIsForeground ) { return; @@ -189,7 +189,15 @@ && aIndex <= FirstIndexOnScreen() + ItemsOnScreen()) ) { UpdateLabelsAndPopup(); - DrawNow(); + if(iFlags & EHgVgMediaWallDrawToWindowGC) + { + DrawNow(); + } + else + { + DrawOpenVG(); + } + } } } @@ -367,19 +375,34 @@ return; } - if(iFlags & EHgVgMediaWallDrawToWindowGC) + CHgVgMediaWall* self = const_cast(this); + + if( iFlags & EHgVgMediaWallDrawToWindowGC ) { - CHgVgMediaWall* self = const_cast(this); - self->ClearFlags(EHgVgMediaWallDrawToWindowGC); - FillSystemGcWithSkin( ); - return; + CFbsBitmap* screenshot = NULL; + screenshot = self->DrawToBitmap(); + if (screenshot) + { + SystemGc().BitBlt( Rect().iTl,screenshot ); + delete screenshot; + } + else + { + // draw with alpha to make a hole to composition layer + SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + SystemGc().SetBrushColor(TRgb(0,0,0,0)); + SystemGc().Clear(); + DrawOpenVG(); + } } - - // draw with alpha to make a hole to composition layer - SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); - SystemGc().SetBrushColor(TRgb(0,0,0,0)); - SystemGc().Clear(); - DrawOpenVG(); + else + { + // draw with alpha to make a hole to composition layer + SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + SystemGc().SetBrushColor(TRgb(0,0,0,0)); + SystemGc().Clear(); + DrawOpenVG(); + } } // ----------------------------------------------------------------------------- @@ -1164,6 +1187,9 @@ iAnimationTimer->Cancel(); } + + SetFlags( EHgVgMediaWallDrawToWindowGC ); + DrawNow(); } if( aType == KEikMessageUnfadeWindows ) @@ -1171,8 +1197,15 @@ ClearFlags( EHgVgMediaWallDrawToWindowGC ); DrawNow(); } + + if( aType == KEikDynamicLayoutVariantSwitch && !(iFlags & EHgVgMediaWallDrawToWindowGC) ) + { + SetFlags( EHgVgMediaWallDrawToWindowGC ); + DrawNow(); + } } + // --------------------------------------------------------------------------- // CHgVgMediaWall::InitItemsL() // --------------------------------------------------------------------------- @@ -1226,13 +1259,16 @@ iIsForeground = EFalse; + // draw screenshot using window gc, this is needed + // for nga effects to work + DrawNow(); + // free textures FreeItemsImages(); // free other resources DestroyRendering(); - SetFlags( EHgVgMediaWallUninitialized ); - DrawNow(); + SetFlags( EHgVgMediaWallUninitialized | EHgVgMediaWallDrawToWindowGC ); iCoeEnv->WsSession().Flush(); }