vector-image-renderer: fix crash at multi-canvas rendering 79/258179/2
authorHermet Park <chuneon.park@samsung.com>
Wed, 12 May 2021 02:11:12 +0000 (11:11 +0900)
committerHermet Park <chuneon.park@samsung.com>
Mon, 7 Jun 2021 03:41:54 +0000 (03:41 +0000)
dali vector animation rendering is running on worker-thread,
it needs to use individual memory pool of tvg to prevent race-condition
among the canvases.

Change-Id: Id1e8e3a864d0432e1a4ad12561726412c73ab8ff

dali-extension/vector-animation-renderer/tizen-rive-animation-renderer.cpp

index 3620c27..47b7aa7 100644 (file)
@@ -280,9 +280,11 @@ bool TizenRiveAnimationRenderer::Render(uint32_t frameNumber)
   if(!mSwCanvas)
   {
     mSwCanvas = tvg::SwCanvas::gen();
+    mSwCanvas->mempool(tvg::SwCanvas::MempoolPolicy::Individual);
+
   }
-  mSwCanvas->target((uint32_t*)buffer, info.planes[0].stride / 4, info.width, info.height, tvg::SwCanvas::ARGB8888);
   mSwCanvas->clear();
+  mSwCanvas->target((uint32_t*)buffer, info.planes[0].stride / 4, info.width, info.height, tvg::SwCanvas::ARGB8888);
 
   // Render Rive Frame
   frameNumber    = mStartFrameNumber + frameNumber;