[Bf-blender-cvs] [1c5c3748b51] blender2.8: Depsgraph: Make sure we pass proper base to object builder

Sergey Sharybin noreply at git.blender.org
Thu Nov 30 12:47:38 CET 2017


Commit: 1c5c3748b5181050dfc18aa2f4b95537ce521643
Author: Sergey Sharybin
Date:   Thu Nov 30 12:27:54 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB1c5c3748b5181050dfc18aa2f4b95537ce521643

Depsgraph: Make sure we pass proper base to object builder

===================================================================

M	source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc

===================================================================

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);



More information about the Bf-blender-cvs mailing list