From 39644a676d5d83ca75f4f6e66b4bcd861ef4ab21 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 18 Jun 2025 00:01:59 +0900 Subject: [PATCH] renderer: hotfix hotfix of regression by 39b0f87cb35e9bef7f6e3e1dd1a9c8e057a67b5e --- src/renderer/tvgCanvas.cpp | 2 +- src/renderer/tvgCanvas.h | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/renderer/tvgCanvas.cpp b/src/renderer/tvgCanvas.cpp index ac580b20..0dfd9c6c 100644 --- a/src/renderer/tvgCanvas.cpp +++ b/src/renderer/tvgCanvas.cpp @@ -59,7 +59,7 @@ Result Canvas::update() noexcept { TVGLOG("RENDERER", "Update S. ------------------------------ Canvas(%p)", this); if (pImpl->scene->paints().empty() || pImpl->status == Status::Drawing) return Result::InsufficientCondition; - auto ret = pImpl->update(false); + auto ret = pImpl->update(nullptr, false); TVGLOG("RENDERER", "Update E. ------------------------------ Canvas(%p)", this); return ret; diff --git a/src/renderer/tvgCanvas.h b/src/renderer/tvgCanvas.h index 323fad5c..a64a6d64 100644 --- a/src/renderer/tvgCanvas.h +++ b/src/renderer/tvgCanvas.h @@ -56,7 +56,7 @@ struct Canvas::Impl auto ret = scene->push(target, at); if (ret != Result::Success) return ret; - return update(true); + return update(target, true); } Result remove(Paint* paint) @@ -65,7 +65,7 @@ struct Canvas::Impl return scene->remove(paint); } - Result update(bool force) + Result update(Paint* paint, bool force) { Array clips; auto flag = RenderUpdateFlag::None; @@ -74,7 +74,8 @@ struct Canvas::Impl if (!renderer->preUpdate()) return Result::InsufficientCondition; auto m = tvg::identity(); - PAINT(scene)->update(renderer, m, clips, 255, flag); + if (paint) PAINT(paint)->update(renderer, m, clips, 255, flag); + else PAINT(scene)->update(renderer, m, clips, 255, flag); if (!renderer->postUpdate()) return Result::InsufficientCondition; @@ -87,7 +88,7 @@ struct Canvas::Impl if (status == Status::Drawing) return Result::InsufficientCondition; if (clear && !renderer->clear()) return Result::InsufficientCondition; if (scene->paints().empty()) return Result::InsufficientCondition; - if (status == Status::Damaged) update(false); + if (status == Status::Damaged) update(nullptr, false); if (!renderer->preRender()) return Result::InsufficientCondition; if (!PAINT(scene)->render(renderer) || !renderer->postRender()) return Result::InsufficientCondition;