From 5055c136b67e97dbf57ab5fc0bb3971fd3be6fd3 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 6 Jun 2020 01:02:03 +1000 Subject: [PATCH] renderer: clear graph update queue when disconnecting a viewer --- app/render/backend/renderbackend.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/render/backend/renderbackend.cpp b/app/render/backend/renderbackend.cpp index 69a0feead..50329cef1 100644 --- a/app/render/backend/renderbackend.cpp +++ b/app/render/backend/renderbackend.cpp @@ -51,7 +51,10 @@ void RenderBackend::SetViewerNode(ViewerOutput *viewer_node) } ViewerOutput* old_viewer = viewer_node_; - viewer_node_ = viewer_node; + if (!viewer_node) { + // If setting to null, set it here before we wait for jobs to finish + viewer_node_ = viewer_node; + } if (old_viewer) { // Delete all of our copied nodes @@ -70,6 +73,7 @@ void RenderBackend::SetViewerNode(ViewerOutput *viewer_node) } copy_map_.clear(); copied_viewer_node_ = nullptr; + graph_update_queue_.clear(); disconnect(old_viewer, &ViewerOutput::GraphChangedFrom, @@ -77,6 +81,11 @@ void RenderBackend::SetViewerNode(ViewerOutput *viewer_node) &RenderBackend::NodeGraphChanged); } + if (viewer_node) { + // If setting to non-null, set it now + viewer_node_ = viewer_node; + } + if (viewer_node_) { // Copy graph copied_viewer_node_ = static_cast(viewer_node_->copy());