diff -r 83d2d132aa58 -r f5bac0badc7e uiacceltk/hitchcock/coretoolkit/src/HuiDisplay.cpp --- a/uiacceltk/hitchcock/coretoolkit/src/HuiDisplay.cpp Fri Apr 16 15:56:24 2010 +0300 +++ b/uiacceltk/hitchcock/coretoolkit/src/HuiDisplay.cpp Mon May 03 13:22:43 2010 +0300 @@ -638,6 +638,12 @@ return EFalse; } + if (!iForegroundTextureTransparency && iForegroundTexture) + { + // When we can blit foreground texture, we shouldn't need any textures in skin side. + iEnv.Skin().ReleaseCachedTextures(); + } + TBool useDirtyRects = (RenderSurface().Flags() & MHuiRenderSurface::EFlagUseDirtyRects) == MHuiRenderSurface::EFlagUseDirtyRects; @@ -748,6 +754,23 @@ iGc->SetPenColor(iBackgroundColor); iGc->InitNewFrame(); + + // if there is a fade effect in progress, we + // need to clear the screen as fade effect uses + // always blending. If we do not clear here + // fade leaves trails in certain situations. + if (iEnv.EffectsEngine()->HasActiveFadeEffect() + || RosterImpl().IsVisibleContentFrozen() // guaranteen, that transparent pixels of the UI surface are drawn correctly during layout switch. + ) + { + iGc->SetPenColor(KRgbBlack); + iGc->SetPenAlpha(0); + iGc->Disable(CHuiGc::EFeatureClipping); + iGc->Disable(CHuiGc::EFeatureBlending); + iGc->Clear(); + } + + if ( iDrawDirtyRegions ) { // Show dirty. @@ -1035,6 +1058,12 @@ iClearBackground = aClearBackground; iBackgroundItems.Reset(); + + // release background texture if clearing is set to None + if(aClearBackground == EClearNone) + { + iEnv.Skin().ReleaseTexture(EHuiSkinBackgroundTexture); + } } @@ -1628,6 +1657,12 @@ EXPORT_C void CHuiDisplay::SetForegroundTextureOptions(TBool aTransparency) { iForegroundTextureTransparency = aTransparency; + + if (!iForegroundTextureTransparency && iForegroundTexture) + { + // When we can blit foreground texture, we shouldn't need any textures in skin side. + iEnv.Skin().ReleaseCachedTextures(); + } } void CHuiDisplay::UpdateForegroundTexture(const TRect& aRect)