[Bf-blender-cvs] [3c7254ffb65] blender2.8: Depsgraph: Fix missing bases array update

Sergey Sharybin noreply at git.blender.org
Wed Apr 18 17:35:10 CEST 2018


Commit: 3c7254ffb65d4f1e07f0b5aaa52b392149226768
Author: Sergey Sharybin
Date:   Wed Apr 18 17:34:18 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB3c7254ffb65d4f1e07f0b5aaa52b392149226768

Depsgraph: Fix missing bases array update

view_layer_object_copy test was broken.

This is a quick fix for now, can be optimized further later.

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

M	source/blender/depsgraph/intern/depsgraph_build.cc

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

diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc b/source/blender/depsgraph/intern/depsgraph_build.cc
index c7f53b51374..f071fd04c5e 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build.cc
@@ -272,6 +272,19 @@ void DEG_graph_tag_relations_update(Depsgraph *graph)
 {
 	DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(graph);
 	deg_graph->need_update = true;
+	/* NOTE: When relations are updated, it's quite possible that
+	 * we've got new bases in the scene. This means, we need to
+	 * re-create flat array of bases in view layer.
+	 *
+	 * TODO(sergey): Try to make it so we don't flush updates
+	 * to the whole depsgraph.
+	 */
+	{
+		DEG::IDDepsNode *id_node = deg_graph->find_id_node(&deg_graph->scene->id);
+		if (id_node != NULL) {
+			id_node->tag_update(deg_graph);
+		}
+	}
 }
 
 /* Create or update relations in the specified graph. */



More information about the Bf-blender-cvs mailing list