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:27:54 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-11-30 14:36:37 +0300
commit1c5c3748b5181050dfc18aa2f4b95537ce521643 (patch)
tree0a2dad3c5ffcf6800f9b28b6d5c216555158445f /source/blender
parent60d6cc8fae6a1a356acf78cc6f3379d2f55f8e91 (diff)
Depsgraph: Make sure we pass proper base to object builder
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc14
1 files changed, 11 insertions, 3 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 76d2581d383..91930636e0a 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
@@ -92,10 +92,18 @@ void DepsgraphNodeBuilder::build_view_layer(Scene *scene,
scene_ = scene;
/* Scene objects. */
int select_color = 1;
- LINKLIST_FOREACH(Base *, base, &view_layer_cow->object_bases) {
+ /* NOTE: Base is used for function bindings as-is, so need to pass CoW base,
+ * but object is expected to be an original one. Hence we go into some
+ * tricks here iterating over the view layer.
+ */
+ for (Base *base_orig = (Base *)view_layer->object_bases.first,
+ *base_cow = (Base *)view_layer_cow->object_bases.first;
+ base_orig != NULL;
+ base_orig = base_orig->next, base_cow = base_cow->next)
+ {
/* object itself */
- build_object(base, base->object, linked_state);
- base->object->select_color = select_color++;
+ build_object(base_cow, base_orig->object, linked_state);
+ base_orig->object->select_color = select_color++;
}
if (scene->camera != NULL) {
build_object(NULL, scene->camera, DEG_ID_LINKED_INDIRECTLY);