diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-11-30 14:35:51 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-11-30 14:36:37 +0300 |
commit | 69a7ece38928cd1602c8721db6193ba56febc7c0 (patch) | |
tree | 64aecca112bda9e21b1bd17790cb93870e9474d7 /source/blender | |
parent | c601ef7d7da8a3222a4d5d8a793eef9706997cd3 (diff) |
Depsgraph: Fix wrong remapping of compositor node tree when CoW is enabled
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc index cd226941278..cf77b859b5c 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc @@ -70,6 +70,12 @@ void DepsgraphNodeBuilder::build_view_layer( ViewLayer *view_layer, eDepsNode_LinkedState_Type linked_state) { + /* Scene ID block. */ + add_id_node(&scene->id); + /* Time source. */ + add_time_source(); + /* Setup currently building context. */ + scene_ = scene; /* Expand Scene Cow datablock to get proper pointers to bases. */ Scene *scene_cow; ViewLayer *view_layer_cow; @@ -82,6 +88,12 @@ void DepsgraphNodeBuilder::build_view_layer( Object *object = base->object; add_id_node(&object->id, false); } + /* Create ID node for nested ID of nodetree as well, otherwise remapping + * will not work correct either. + */ + if (scene->nodetree != NULL) { + add_id_node(&scene->nodetree->id, false); + } /* Make sure we've got ID node, so we can get pointer to CoW datablock. */ scene_cow = expand_cow_datablock(scene); @@ -94,12 +106,6 @@ void DepsgraphNodeBuilder::build_view_layer( scene_cow = scene; view_layer_cow = view_layer; } - /* Scene ID block. */ - add_id_node(&scene->id); - /* Time source. */ - add_time_source(); - /* Setup currently building context. */ - scene_ = scene; /* Scene objects. */ int select_color = 1; /* NOTE: Base is used for function bindings as-is, so need to pass CoW base, |