diff --git a/src/lib/tvgScene.cpp b/src/lib/tvgScene.cpp index afe67d19..20821211 100644 --- a/src/lib/tvgScene.cpp +++ b/src/lib/tvgScene.cpp @@ -67,4 +67,4 @@ Result Scene::clear(bool free) noexcept pImpl->clear(free); return Result::Success; -} +} \ No newline at end of file diff --git a/src/lib/tvgSceneImpl.h b/src/lib/tvgSceneImpl.h index 9c6c56f3..89c24d67 100644 --- a/src/lib/tvgSceneImpl.h +++ b/src/lib/tvgSceneImpl.h @@ -172,19 +172,13 @@ struct Scene::Impl void clear(bool free) { - //Clear render target before drawing - if (renderer && renderer->clear()) { - for (auto paint = paints.data; paint < (paints.data + paints.count); ++paint) { - (*paint)->pImpl->dispose(*renderer); - } + auto dispose = renderer ? true : false; + + for (auto paint = paints.data; paint < (paints.data + paints.count); ++paint) { + if (dispose) (*paint)->pImpl->dispose(*renderer); + if (free) delete(*paint); renderer = nullptr; } - //free paints - if (free) { - for (auto paint = paints.data; paint < (paints.data + paints.count); ++paint) { - delete(*paint); - } - } paints.clear(); } };