Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2017-11-30 14:35:51 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-11-30 14:36:37 +0300
commit69a7ece38928cd1602c8721db6193ba56febc7c0 (patch)
tree64aecca112bda9e21b1bd17790cb93870e9474d7 /source/blender
parentc601ef7d7da8a3222a4d5d8a793eef9706997cd3 (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.cc18
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,