From: Ferran Sole Date: Mon, 28 Apr 2014 07:52:44 +0000 (+0100) Subject: Fix bug when reusing renderlist on stencil renderers X-Git-Tag: dali-2014-wk20-release~29 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d30bed46e37dc9cd266d20729cc8a464ab53fb8b;p=platform%2Fcore%2Fuifw%2Fdali-core.git Fix bug when reusing renderlist on stencil renderers [Issue#] N/A [Problem] When reusing renderlists for stencil renderers, the stencil renderers are rendered in the color buffer sometimes. [Cause] When reusing a renderlist for stencil renderers the appropiate flags where not seted on the renderlist which causes this renderers to be rendered in the color buffer. [Solution] Added a function to reset the flags correctly for stencil renderlists as in the rest of renderlists (opaque, transparent and overlay) Change-Id: Ic80a33af8ac8ac6bf606610fae5d6279cee8cf81 Signed-off-by: David Steele --- diff --git a/dali/internal/update/manager/prepare-render-instructions.cpp b/dali/internal/update/manager/prepare-render-instructions.cpp index 71da5e9..aabc96a 100644 --- a/dali/internal/update/manager/prepare-render-instructions.cpp +++ b/dali/internal/update/manager/prepare-render-instructions.cpp @@ -121,6 +121,16 @@ inline void SetOverlayRenderFlags( RenderList& renderList, bool stencilRenderabl } /** + * Set flags for stencil renderlist + * @param renderList to set the flags for + */ +inline void SetStencilRenderFlags( RenderList& renderList ) +{ + renderList.ClearFlags(); + renderList.SetFlags(RenderList::STENCIL_CLEAR | RenderList::STENCIL_WRITE | RenderList::STENCIL_TEST); +} + +/** * Add a renderer to the list * @param updateBufferIndex to read the model matrix from * @param renderList to add the item to @@ -411,6 +421,7 @@ inline void AddStencilRenderers( BufferIndex updateBufferIndex, { RenderList& stencilRenderList = instruction.GetNextFreeRenderList( layer.stencilRenderables.size() ); stencilRenderList.SetClipping( layer.IsClipping(), layer.GetClippingBox() ); + SetStencilRenderFlags( stencilRenderList ); // try to reuse cached renderitems from last time around if( tryReuseRenderList ) @@ -421,11 +432,6 @@ inline void AddStencilRenderers( BufferIndex updateBufferIndex, } } AddRenderersToRenderList( updateBufferIndex, stencilRenderList, layer.stencilRenderables, viewMatrix ); - - stencilRenderList.ClearFlags(); - stencilRenderList.SetFlags(RenderList::STENCIL_CLEAR); - stencilRenderList.SetFlags(RenderList::STENCIL_WRITE); - stencilRenderList.SetFlags(RenderList::STENCIL_TEST); } /**