From fd692e69107f667b8a9e009104b0afc4144caf16 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Thu, 5 May 2022 09:39:52 -0700 Subject: [PATCH] rendertask: always wait for watchers to finish I don't know why this wasn't written to do this before, perhaps I thought waiting for the thread would achieve this goal. Anyway, in my testing, this ensures render jobs are complete before the task returns. Fixes #1899 Fixes #1900 --- app/task/render/render.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/task/render/render.cpp b/app/task/render/render.cpp index f3cd07d5c..bb7c99a17 100644 --- a/app/task/render/render.cpp +++ b/app/task/render/render.cpp @@ -266,9 +266,14 @@ bool RenderTask::Render(ColorManager* manager, if (IsCancelled() || !result) { // Cancel every watcher we created foreach (RenderTicketWatcher* watcher, running_watchers_) { + watcher->Cancel(); disconnect(watcher, &RenderTicketWatcher::Finished, this, &RenderTask::TicketDone); RenderManager::instance()->RemoveTicket(watcher->GetTicket()); } + + foreach (RenderTicketWatcher* watcher, running_watchers_) { + watcher->WaitForFinished(); + } } watcher_thread.quit();