diff options
author | Jacques Lucke <jacques@blender.org> | 2021-03-29 11:07:40 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-03-29 11:14:54 +0300 |
commit | fa1569a072ad78c8a9c037a46a6581692729d6cc (patch) | |
tree | 45bcefbb5152e6f6d65ebd6d7a91c70d4a17155b /source/blender/modifiers | |
parent | 4e34baddb917c1583182ada2fa5c2ce7d9e02486 (diff) |
Fix T86966: crash when rendering with geometry nodes
UI hints should only be modified when the depsgraph is active.
Otherwise two threads evaluating the same object in different depsgraphs
can conflict with each other.
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_nodes.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc index 6236dc87791..d2fb2e0260c 100644 --- a/source/blender/modifiers/intern/MOD_nodes.cc +++ b/source/blender/modifiers/intern/MOD_nodes.cc @@ -414,7 +414,9 @@ class GeometryNodesEvaluator { { const bNode &bnode = params.node(); - this->store_ui_hints(node, params); + if (DEG_is_active(depsgraph_)) { + this->store_ui_hints(node, params); + } /* Use the geometry-node-execute callback if it exists. */ if (bnode.typeinfo->geometry_node_execute != nullptr) { @@ -1197,7 +1199,9 @@ static void modifyGeometry(ModifierData *md, return; } - reset_tree_ui_storage(tree.used_node_tree_refs(), *ctx->object, *md); + if (DEG_is_active(ctx->depsgraph)) { + reset_tree_ui_storage(tree.used_node_tree_refs(), *ctx->object, *md); + } geometry_set = compute_geometry( tree, group_inputs, *group_outputs[0], std::move(geometry_set), nmd, ctx); |