diff --git a/inc/tizenvg.h b/inc/tizenvg.h index 40f38acb..87086957 100644 --- a/inc/tizenvg.h +++ b/inc/tizenvg.h @@ -92,7 +92,7 @@ public: int reserve(size_t n) noexcept; virtual int push(std::unique_ptr paint) noexcept; - virtual int clear(bool clearPaints = true) noexcept; + virtual int clear() noexcept; virtual int update() noexcept; virtual int draw(bool async = true) noexcept; virtual int sync() = 0; diff --git a/src/lib/gl_engine/tvgGlRenderer.cpp b/src/lib/gl_engine/tvgGlRenderer.cpp index 8cf84da3..ca319ed7 100644 --- a/src/lib/gl_engine/tvgGlRenderer.cpp +++ b/src/lib/gl_engine/tvgGlRenderer.cpp @@ -37,6 +37,8 @@ struct GlShape bool GlRenderer::clear() { + //TODO: (Request) to clear target + return true; } diff --git a/src/lib/tvgCanvas.cpp b/src/lib/tvgCanvas.cpp index e1f41b74..d9bf1764 100644 --- a/src/lib/tvgCanvas.cpp +++ b/src/lib/tvgCanvas.cpp @@ -36,7 +36,7 @@ struct Canvas::Impl ~Impl() { - clearPaints(); + clear(); renderer->unref(); } @@ -55,13 +55,7 @@ struct Canvas::Impl return node->update(renderer); } - bool clearRender() - { - assert(renderer); - return renderer->clear()); - } - - int clearPaints() + int clear() { assert(renderer); @@ -82,19 +76,20 @@ struct Canvas::Impl { assert(renderer); - auto ret = 0; - for(auto node: nodes) { - ret |= node->update(renderer); + if (!node->update(renderer)) return -1; } - return ret; + return 0; } int draw() { assert(renderer); + //Clear render target before drawing + if (!renderer->clear()) return -1; + for(auto node: nodes) { if (SceneNode *scene = dynamic_cast(node)) { cout << "TODO: " << scene << endl; @@ -139,14 +134,11 @@ int Canvas::push(unique_ptr paint) noexcept } -int Canvas::clear(bool clearPaints) noexcept +int Canvas::clear() noexcept { auto impl = pImpl.get(); assert(impl); - auto ret = 0; - if (clearPaints) ret |= impl->clearPaints(); - ret |= impl->clearRender(); - return ret; + return impl->clear(); } diff --git a/src/lib/tvgSwCanvas.cpp b/src/lib/tvgSwCanvas.cpp index f75d79c1..a4e49ddb 100644 --- a/src/lib/tvgSwCanvas.cpp +++ b/src/lib/tvgSwCanvas.cpp @@ -50,7 +50,6 @@ int SwCanvas::target(uint32_t* buffer, size_t stride, size_t w, size_t h) noexce assert(renderer); if (!renderer->target(buffer, stride, w, h)) return -1; - if (!renderer->clear()) return -1; return 0; }