uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp
branchRCL_3
changeset 63 e1987ab3768a
parent 57 eaa079afe64c
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -137,6 +137,7 @@
 
 CHuiCanvasVisual::~CHuiCanvasVisual()
     {
+   
     FreeRenderBuffer();	
     if (iCanvasVisualData)
         {
@@ -303,7 +304,7 @@
     if (iCanvasVisualData->iCommandsReceivedWhileNoCache)
         {
         Env().CanvasTextureCache().EnableTouchCountCheck( touchCountWasEnabled );
-        if ( !KeepNoCache() && aAction == EDrawBuffer )
+        if ( KeepCache() && aAction == EDrawBuffer )
             {
             iCanvasVisualData->iCommandsReceivedWhileNoCache = EFalse;
             }   
@@ -399,16 +400,12 @@
         return;
         }
 
-    if ((IsDelayedEffectSource() || Freezed())) 
+    if ((IsDelayedEffectSource() || Freezed()))
         {
         // Select right draw mode
         THuiCanvasDrawMode drawMode = (Flags() & EHuiVisualFlagOpaqueHint) ? EHuiCanvasDrawModeNormal : EHuiCanvasDrawModeBlend;
-        if(Effectable()->ExternalTexture())
-            {
-            DrawExternalImage(aGc);
-            return;
-            }
-        else if (StoredRenderBuffer())
+
+        if (StoredRenderBuffer())
             {
             DrawStoredFullScreenRenderBuffer(drawMode, aGc);
             return;
@@ -603,14 +600,7 @@
         // Select right draw mode
         THuiCanvasDrawMode drawMode = (Flags() & EHuiVisualFlagOpaqueHint) ? EHuiCanvasDrawModeNormal : EHuiCanvasDrawModeBlend;
         
-        THuiFxVisualSrcType effectSource = Effectable()->EffectGetSource();
-            
-        if(effectSource == EVisualSrcBitmap && Effectable()->ExternalTexture())
-            {
-            DrawExternalImage(aGc);
-            return;
-            }
-        else if (effectSource == EVisualSrcInput1 && StoredRenderBuffer())
+        if (StoredRenderBuffer())
             {
             DrawStoredFullScreenRenderBuffer(drawMode, aGc);
 			return;
@@ -850,7 +840,7 @@
 	TRAP_IGNORE(iCanvasVisualData->iCanvasPainter->SetCommandSetL(aCommands));	
 
 	// Memory optimization. Do not prepare cache if visual is inactive.
-    if (KeepNoCache())
+    if (!KeepCache())
         {
         iCanvasVisualData->iCommandsReceivedWhileNoCache = ETrue;
         ClearCache();
@@ -921,7 +911,7 @@
     TRAP_IGNORE(iCanvasVisualData->iCanvasPainter->AddCommandSetL(aMoreCommands));
     
     // Memory optimization. Do not prepare cache if visual is inactive.
-    if (KeepNoCache())
+    if (!KeepCache())
         {
         iCanvasVisualData->iCommandsReceivedWhileNoCache = ETrue;
         ClearCache();
@@ -1448,57 +1438,17 @@
     gc.PopTransformationMatrix();
     }
 
-
-void CHuiCanvasVisual::DrawExternalImage(CHuiGc& aGc) const
-    {
-    if (!Display()) 
-		{
-		return;
-		}
-		
-    if (!iHuiLayoutPrivateData->iGc)
-        {
-        CHuiRenderPlugin& renderplugin = CHuiStatic::Renderer();
-        // iHuiLayoutPrivateData->iGc is deleted in CHuiLayout destructor or CHuiCanvasVisual::FreeRenderBuffer when not needed anymore 
-        iHuiLayoutPrivateData->iGc = renderplugin.CreateCanvasGcL();
-        }
-        
-    TRect displayArea = Display()->VisibleArea();
-    
-    if (Effectable()->ExternalTexture())
-        {
-        CHuiCanvasGc& gc = *iHuiLayoutPrivateData->iGc;
-        gc.SetGc(aGc);
-        gc.SetDefaults();
-        gc.PushTransformationMatrix();
-        
-        TInt height = displayArea.Height();
-        TInt width = displayArea.Width();
-    
-        // Move the center of the image to the center of the screen
-        TInt tlX = width/2 - Effectable()->ExternalTexture()->Size().iWidth/2;
-        TInt tlY = height/2 - Effectable()->ExternalTexture()->Size().iHeight/2;
-        gc.Translate(tlX, tlY, 0.0f);
-        
-        // Draw the image and do the cleanup
-        gc.DrawImage(*Effectable()->ExternalTexture(), displayArea, TRect(TPoint(0,0), Effectable()->ExternalTexture()->Size()), CHuiGc::EStretchNone);
-    
-        gc.PopTransformationMatrix();
-        
-        }
-    }
-
 EXPORT_C void CHuiCanvasVisual::FreeRenderBuffer()
     {
     if (iCanvasVisualData)
         {
-        delete iCanvasVisualData->iStoredRenderBuffer;
-        iCanvasVisualData->iStoredRenderBuffer = NULL;
-        }
-    if (iHuiLayoutPrivateData)
-        {
-        delete iHuiLayoutPrivateData->iGc;
-        iHuiLayoutPrivateData->iGc = NULL;
+        if (iCanvasVisualData->iStoredRenderBuffer)
+            {
+            delete iCanvasVisualData->iStoredRenderBuffer;
+            iCanvasVisualData->iStoredRenderBuffer = NULL;
+            delete iHuiLayoutPrivateData->iGc;
+            iHuiLayoutPrivateData->iGc = NULL;
+            }
         }
     }
 
@@ -1675,14 +1625,14 @@
     return iCanvasVisualData->iCanvasPainter->HasCommandBuffers(EHuiCanvasBufferContainsTransparentClear);
     }
 
-TBool CHuiCanvasVisual::KeepNoCache() const
+TBool CHuiCanvasVisual::KeepCache() const
     {
     TBool rosterFrozen = Display() && Display()->Roster().IsVisibleContentFrozen();
     TBool inactive = EFalse; 
     inactive |= Flags() & EHuiVisualFlagInactive;
     inactive |= Flags() & EHuiVisualFlagUnderOpaqueHint;
     
-    return rosterFrozen || inactive;
+    return !( rosterFrozen || inactive );
     }
 
 TBool CHuiCanvasVisual::EffectReadyToDrawNextFrame() const