[Bf-blender-cvs] [b1946e7f7ad] master: Depsgraph: Report overall number of cycles detected

Sergey Sharybin noreply at git.blender.org
Wed Feb 21 10:29:35 CET 2018


Commit: b1946e7f7ad2c9a308060f4f1a06f82cdcb4c8a5
Author: Sergey Sharybin
Date:   Tue Feb 20 17:16:41 2018 +0100
Branches: master
https://developer.blender.org/rBb1946e7f7ad2c9a308060f4f1a06f82cdcb4c8a5

Depsgraph: Report overall number of cycles detected

Handy to quickly see if a fix fixed any of the cycles in a real rig,
or whether it's introduced new ones.

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

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

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

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_cycle.cc b/source/blender/depsgraph/intern/builder/deg_builder_cycle.cc
index e30b9b44490..c9fa35bd551 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_cycle.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_cycle.cc
@@ -87,6 +87,7 @@ void deg_graph_detect_cycles(Depsgraph *graph)
 	BLI_Stack *traversal_stack = BLI_stack_new(sizeof(StackEntry),
 	                                           "DEG detect cycles stack");
 
+	int num_cycles = 0;
 	foreach (OperationDepsNode *node, graph->operations) {
 		bool has_inlinks = false;
 		foreach (DepsRelation *rel, node->inlinks) {
@@ -136,6 +137,7 @@ void deg_graph_detect_cycles(Depsgraph *graph)
 					}
 					/* TODO(sergey): So called russian roulette cycle solver. */
 					rel->flag |= DEPSREL_FLAG_CYCLIC;
+					++num_cycles;
 				}
 				else if (to_state == NODE_NOT_VISITED) {
 					StackEntry new_entry;
@@ -157,6 +159,10 @@ void deg_graph_detect_cycles(Depsgraph *graph)
 	}
 
 	BLI_stack_free(traversal_stack);
+
+	if (num_cycles != 0) {
+		printf("Detected %d dependency cycles\n", num_cycles);
+	}
 }
 
 }  // namespace DEG



More information about the Bf-blender-cvs mailing list