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;