uiacceltk/hitchcock/coretoolkit/src/HuiFxEffect.cpp
branchRCL_3
changeset 7 433cbbb6a04b
parent 0 15bf7259bb7c
child 8 10534483575f
child 14 83d2d132aa58
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiFxEffect.cpp	Mon Feb 22 17:57:49 2010 +0200
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiFxEffect.cpp	Fri Mar 12 15:47:04 2010 +0200
@@ -238,6 +238,12 @@
         {
         iRoot->EnableMargin(EFalse);
         }
+
+    // Check if surface pixels are to be used for this effect in all layers.
+    if (EffectFlags() & KHuiFxEnableBackgroundInAllLayers)
+        {
+        iRoot->SetAlwaysReadSurfacePixels(ETrue);
+        }
     
     iRoot->SetTargetRect(targetArea);
     iRoot->SetSourceRect(targetArea);        
@@ -257,8 +263,15 @@
         // Background has not been disabled with a effect specific flag
         TBool enableBackground = IsAppliedToBackground() && (!aOpaque || iRoot->IsMarginEnabled()) && !(EffectFlags() & KHuiFxDisableBackground);
         
+        if (EffectFlags() & KHuiFxEnableBackgroundInAllLayers)
+            {
+            enableBackground = ETrue;
+            }
+        
+        TBool useFrozenBackground = (EffectFlags() & KHuiFxFrozenBackground);
+        
         // Check if cache is up-to date or does it need to be refreshed
-        TBool cachedRenderTargetNeedsRefresh = (iRoot->Changed() || aRefreshCachedRenderTarget || enableBackground);
+        TBool cachedRenderTargetNeedsRefresh = (iRoot->Changed() || aRefreshCachedRenderTarget || (enableBackground && !useFrozenBackground));
 
         // Try to apply also margins, we cannot just use aDisplayRect directly
         TRect targetRect = iRoot->VisualRect();