tizen-vector-image-renderer: fix crash at multi-canvas rendering 17/260517/2
authorJunsuChoi <jsuya.choi@samsung.com>
Mon, 28 Jun 2021 07:14:22 +0000 (16:14 +0900)
committerHermet Park <chuneon.park@samsung.com>
Tue, 6 Jul 2021 10:18:44 +0000 (10:18 +0000)
tizen-vector-image-rendering(svg is running on worker thread,
it needs to use individual memory pool of tvg to prevent race-condition
among the canvases.

Change-Id: I305395dcd2dbcefa59e1525b5730e20d1b1de76e

dali-extension/vector-image-renderer/tizen-vector-image-renderer.cpp

index c2e794b..e22f0f7 100755 (executable)
@@ -42,6 +42,7 @@ TizenVectorImageRenderer::TizenVectorImageRenderer()
   tvg::Initializer::init(tvg::CanvasEngine::Sw, 0);
 
   mSwCanvas = tvg::SwCanvas::gen();
+  mSwCanvas->mempool(tvg::SwCanvas::MempoolPolicy::Individual);
 }
 
 TizenVectorImageRenderer::~TizenVectorImageRenderer()
@@ -109,6 +110,7 @@ bool TizenVectorImageRenderer::Rasterize(Dali::Devel::PixelBuffer& buffer)
   auto width = buffer.GetWidth();
   auto height = buffer.GetHeight();
 
+  mSwCanvas->clear();
   mSwCanvas->target(reinterpret_cast<uint32_t*>(pBuffer), width, width, height, tvg::SwCanvas::ABGR8888);
 
   DALI_LOG_RELEASE_INFO("TizenVectorImageRenderer::Rasterize: Buffer[%p] size[%d x %d]! [%p]\n", pBuffer, width, height, this);