uiacceltk/hitchcock/coretoolkit/rendervg10/src/huivg10canvasrenderbuffer.cpp
branchRCL_3
changeset 9 3ac8bf5c5014
parent 0 15bf7259bb7c
child 18 1801340c26a2
--- a/uiacceltk/hitchcock/coretoolkit/rendervg10/src/huivg10canvasrenderbuffer.cpp	Wed Apr 14 16:53:50 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/rendervg10/src/huivg10canvasrenderbuffer.cpp	Tue Apr 27 17:34:42 2010 +0300
@@ -450,3 +450,39 @@
         }
     }
 
+void CHuiVg10CanvasRenderBuffer::InitializeL(const TSize& aSize, TBool aForceClear)
+    {
+    if (!IsInitialized())
+        {
+        InitializeL(aSize);
+        }
+    else
+        {
+        if (aForceClear)
+            {
+            CHuiVg10RenderPlugin& renderer = CHuiStatic::Vg10Renderer();
+
+            // Reinitialize the context
+            PushEGLContext();
+        
+            Bind();
+            iGc->InitState();
+        
+            VGfloat color[] = 
+                {
+                0.f, 0.f, 0.f, 0.f
+                };
+            vgSetfv(VG_CLEAR_COLOR, sizeof(color) / sizeof(VGfloat), color);
+            vgClear(0, 0, iSize.iWidth, iSize.iHeight);
+            UnBind();
+
+            // Let renderer know that we have been fiddlling with OpenVg state directly
+            // "iGc->InitState" confuses scissoring setting, so lets notify it.
+            renderer.AddRestoreStateFlags(EHuiVg10GcStateFlagDirtyScissor);    
+            renderer.AddRestoreStateFlags(EHuiVg10GcStateFlagDirtyBlendMode);    
+    
+            PopEGLContext();
+            }
+        }
+    }
+