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());