diff --git a/src/examples/Arc.cpp b/src/examples/Arc.cpp index ccd75fb9..4bedced9 100644 --- a/src/examples/Arc.cpp +++ b/src/examples/Arc.cpp @@ -93,6 +93,7 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + swCanvas->clear(); //Flush out cached resource } diff --git a/src/examples/Blending.cpp b/src/examples/Blending.cpp index 81f3e012..a821d66c 100644 --- a/src/examples/Blending.cpp +++ b/src/examples/Blending.cpp @@ -76,6 +76,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -109,6 +112,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Boundary.cpp b/src/examples/Boundary.cpp index e39e1cb5..cc89f28c 100644 --- a/src/examples/Boundary.cpp +++ b/src/examples/Boundary.cpp @@ -65,6 +65,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -98,6 +101,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/ClipPath.cpp b/src/examples/ClipPath.cpp index f695fe1a..2b246676 100644 --- a/src/examples/ClipPath.cpp +++ b/src/examples/ClipPath.cpp @@ -135,6 +135,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -168,6 +171,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Duplicate.cpp b/src/examples/Duplicate.cpp index 2c94642b..799248a3 100644 --- a/src/examples/Duplicate.cpp +++ b/src/examples/Duplicate.cpp @@ -117,6 +117,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -150,6 +153,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/FillRule.cpp b/src/examples/FillRule.cpp index dd6728e4..ce5bd34d 100644 --- a/src/examples/FillRule.cpp +++ b/src/examples/FillRule.cpp @@ -59,6 +59,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -92,6 +95,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/LinearGradient.cpp b/src/examples/LinearGradient.cpp index 8d255430..0e87e520 100644 --- a/src/examples/LinearGradient.cpp +++ b/src/examples/LinearGradient.cpp @@ -94,6 +94,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -127,6 +130,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/MultiCanvas.cpp b/src/examples/MultiCanvas.cpp index e8739af7..42ea2148 100644 --- a/src/examples/MultiCanvas.cpp +++ b/src/examples/MultiCanvas.cpp @@ -79,6 +79,9 @@ void drawSwView(void* data, Eo* obj) if (canvas->draw() == tvg::Result::Success) { canvas->sync(); } + + //Explicitly clear all retained resources. + canvas->clear(); } @@ -160,6 +163,9 @@ void drawGLview(Evas_Object *obj) if (canvas->draw() == tvg::Result::Success) { canvas->sync(); } + + //Explicitly clear all retained resources. + canvas->clear(); } diff --git a/src/examples/MultiShapes.cpp b/src/examples/MultiShapes.cpp index c7b88a04..a629a669 100644 --- a/src/examples/MultiShapes.cpp +++ b/src/examples/MultiShapes.cpp @@ -54,6 +54,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -87,6 +90,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Opacity.cpp b/src/examples/Opacity.cpp index 3b9dd44e..afc7309b 100644 --- a/src/examples/Opacity.cpp +++ b/src/examples/Opacity.cpp @@ -83,6 +83,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -116,6 +119,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Path.cpp b/src/examples/Path.cpp index 3b4241ef..5d22adc7 100644 --- a/src/examples/Path.cpp +++ b/src/examples/Path.cpp @@ -71,6 +71,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -104,6 +107,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/PathCopy.cpp b/src/examples/PathCopy.cpp index fca78bea..13747f30 100644 --- a/src/examples/PathCopy.cpp +++ b/src/examples/PathCopy.cpp @@ -108,6 +108,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -141,6 +144,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/RadialGradient.cpp b/src/examples/RadialGradient.cpp index c33ba432..e778ffe9 100644 --- a/src/examples/RadialGradient.cpp +++ b/src/examples/RadialGradient.cpp @@ -94,6 +94,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -127,6 +130,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Scene.cpp b/src/examples/Scene.cpp index 4760b949..3e809082 100644 --- a/src/examples/Scene.cpp +++ b/src/examples/Scene.cpp @@ -101,6 +101,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -134,6 +137,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Shape.cpp b/src/examples/Shape.cpp index 235e82ed..200ad2d2 100644 --- a/src/examples/Shape.cpp +++ b/src/examples/Shape.cpp @@ -44,6 +44,9 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -77,6 +80,9 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Stroke.cpp b/src/examples/Stroke.cpp index a1beeee4..707b21d5 100644 --- a/src/examples/Stroke.cpp +++ b/src/examples/Stroke.cpp @@ -102,6 +102,8 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -135,6 +137,8 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/StrokeLine.cpp b/src/examples/StrokeLine.cpp index 6c8cc7ba..33acccf1 100644 --- a/src/examples/StrokeLine.cpp +++ b/src/examples/StrokeLine.cpp @@ -176,6 +176,8 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -209,6 +211,8 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + //Explicitly clear all retained resources. + glCanvas->clear(); } @@ -237,7 +241,6 @@ int main(int argc, char **argv) //Initialize ThorVG Engine if (tvg::Initializer::init(tvgEngine, threads) == tvg::Result::Success) { - elm_init(argc, argv); if (tvgEngine == tvg::CanvasEngine::Sw) { diff --git a/src/examples/Svg.cpp b/src/examples/Svg.cpp index d1ef9e73..548ece55 100644 --- a/src/examples/Svg.cpp +++ b/src/examples/Svg.cpp @@ -97,6 +97,8 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -130,6 +132,8 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Svg2.cpp b/src/examples/Svg2.cpp index 4cf61141..b9cf5c0c 100644 --- a/src/examples/Svg2.cpp +++ b/src/examples/Svg2.cpp @@ -69,6 +69,8 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -102,6 +104,8 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + //Explicitly clear all retained resources. + glCanvas->clear(); } diff --git a/src/examples/Update.cpp b/src/examples/Update.cpp index 8ebe428a..fdd00454 100644 --- a/src/examples/Update.cpp +++ b/src/examples/Update.cpp @@ -19,9 +19,6 @@ void tvgUpdateCmds(tvg::Canvas* canvas, float progress) { if (!canvas) return; - //Explicitly clear all retained paint nodes. - if (canvas->clear() != tvg::Result::Success) return; - //Shape auto shape = tvg::Shape::gen(); shape->appendRect(-100, -100, 200, 200, (100 * progress), (100 * progress)); @@ -68,6 +65,8 @@ void drawSwView(void* data, Eo* obj) if (swCanvas->draw() == tvg::Result::Success) { swCanvas->sync(); } + //Explicitly clear all retained resources. + swCanvas->clear(); } @@ -101,6 +100,8 @@ void drawGLview(Evas_Object *obj) if (glCanvas->draw() == tvg::Result::Success) { glCanvas->sync(); } + //Explicitly clear all retained resources. + glCanvas->clear(); } void transitGlCb(Elm_Transit_Effect *effect, Elm_Transit* transit, double progress) diff --git a/src/lib/sw_engine/tvgSwResMgr.cpp b/src/lib/sw_engine/tvgSwResMgr.cpp index 3a33e9f1..6a21260c 100644 --- a/src/lib/sw_engine/tvgSwResMgr.cpp +++ b/src/lib/sw_engine/tvgSwResMgr.cpp @@ -50,6 +50,7 @@ void resMgrRetrieveOutline(unsigned idx) bool resMgrInit(unsigned threads) { + if (threads == 0) threads = 1; sharedOutline.reserve(threads); sharedOutline.resize(threads); threadsCnt = threads;