From 70b21d6c2a16787e175b82f620339ebddbccd0af Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 19 Jul 2020 12:03:31 +1000 Subject: [PATCH] renderer: always prioritize array parent over children Fixes common segfault. --- app/render/backend/renderbackend.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/render/backend/renderbackend.cpp b/app/render/backend/renderbackend.cpp index 5e1a1f018..e8e3a3f6b 100644 --- a/app/render/backend/renderbackend.cpp +++ b/app/render/backend/renderbackend.cpp @@ -227,8 +227,15 @@ void RenderBackend::NodeGraphChanged(NodeInput *source) return; } + // Check if the source is a member of this array, in which case it'll be copied eventually anyway + if (queued_input->IsArray() + && static_cast(queued_input)->sub_params().contains(source)) { + return; + } + // Check if this input supersedes an already queued input - if (queued_input->parentNode()->OutputsTo(source, true)) { + if (queued_input->parentNode()->OutputsTo(source, true) + || (source->IsArray() && static_cast(source)->sub_params().contains(queued_input))) { // In which case, we don't need to queue it and can queue our own graph_update_queue_.removeAt(i); i--;