From eda022365f7e166a857cdb775acee437074e0849 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 7 Jun 2021 18:01:26 +0900 Subject: [PATCH] canvas: fix for SwCanvas Unit Test Fixed to fail canvas generation if engines are not initialized. --- src/lib/gl_engine/tvgGlRenderer.cpp | 6 ++++++ src/lib/gl_engine/tvgGlRenderer.h | 1 + src/lib/sw_engine/tvgSwRenderer.cpp | 6 ++++++ src/lib/sw_engine/tvgSwRenderer.h | 1 + src/lib/tvgGlCanvas.cpp | 1 + src/lib/tvgSwCanvas.cpp | 1 + 6 files changed, 16 insertions(+) diff --git a/src/lib/gl_engine/tvgGlRenderer.cpp b/src/lib/gl_engine/tvgGlRenderer.cpp index 40f67871..a5c00121 100644 --- a/src/lib/gl_engine/tvgGlRenderer.cpp +++ b/src/lib/gl_engine/tvgGlRenderer.cpp @@ -257,6 +257,12 @@ int GlRenderer::init(uint32_t threads) } +int32_t GlRenderer::init() +{ + return initEngineCnt; +} + + int GlRenderer::term() { if ((--initEngineCnt) > 0) return true; diff --git a/src/lib/gl_engine/tvgGlRenderer.h b/src/lib/gl_engine/tvgGlRenderer.h index 0c0ecac1..0935284e 100644 --- a/src/lib/gl_engine/tvgGlRenderer.h +++ b/src/lib/gl_engine/tvgGlRenderer.h @@ -51,6 +51,7 @@ public: static GlRenderer* gen(); static int init(TVG_UNUSED uint32_t threads); + static int32_t init(); static int term(); private: diff --git a/src/lib/sw_engine/tvgSwRenderer.cpp b/src/lib/sw_engine/tvgSwRenderer.cpp index 7afcf231..1006fd1e 100644 --- a/src/lib/sw_engine/tvgSwRenderer.cpp +++ b/src/lib/sw_engine/tvgSwRenderer.cpp @@ -622,6 +622,12 @@ bool SwRenderer::init(uint32_t threads) } +int32_t SwRenderer::init() +{ + return initEngineCnt; +} + + bool SwRenderer::term() { if ((--initEngineCnt) > 0) return true; diff --git a/src/lib/sw_engine/tvgSwRenderer.h b/src/lib/sw_engine/tvgSwRenderer.h index c61984ba..9198253e 100644 --- a/src/lib/sw_engine/tvgSwRenderer.h +++ b/src/lib/sw_engine/tvgSwRenderer.h @@ -57,6 +57,7 @@ public: static SwRenderer* gen(); static bool init(uint32_t threads); + static int32_t init(); static bool term(); private: diff --git a/src/lib/tvgGlCanvas.cpp b/src/lib/tvgGlCanvas.cpp index aebe40b5..3a88b6d7 100644 --- a/src/lib/tvgGlCanvas.cpp +++ b/src/lib/tvgGlCanvas.cpp @@ -80,6 +80,7 @@ Result GlCanvas::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t unique_ptr GlCanvas::gen() noexcept { #ifdef THORVG_GL_RASTER_SUPPORT + if (GlRenderer::init() <= 0) return nullptr; return unique_ptr(new GlCanvas); #endif return nullptr; diff --git a/src/lib/tvgSwCanvas.cpp b/src/lib/tvgSwCanvas.cpp index a0e06ca2..f7a03b81 100644 --- a/src/lib/tvgSwCanvas.cpp +++ b/src/lib/tvgSwCanvas.cpp @@ -98,6 +98,7 @@ Result SwCanvas::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t unique_ptr SwCanvas::gen() noexcept { #ifdef THORVG_SW_RASTER_SUPPORT + if (SwRenderer::init() <= 0) return nullptr; return unique_ptr(new SwCanvas); #endif return nullptr;