uiacceltk/hitchcock/coretoolkit/src/HuiDisplay.cpp
changeset 19 f5bac0badc7e
parent 14 83d2d132aa58
child 21 6ce30188c5bf
--- 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)