[Bf-blender-cvs] [80b036afab8] master: Depsgraph: make the dependency cycle report more readable.

Alexander Gavrilov noreply at git.blender.org
Tue Apr 23 17:29:59 CEST 2019


Commit: 80b036afab8c2b3c7dabbd270b29daa439d472aa
Author: Alexander Gavrilov
Date:   Tue Apr 23 18:29:36 2019 +0300
Branches: master
https://developer.blender.org/rB80b036afab8c2b3c7dabbd270b29daa439d472aa

Depsgraph: make the dependency cycle report more readable.

Since it is a continuous cycle, there's no need to repeat the
name of the previous bone. Also, dot is a common symbol in object
and bone names, so use '/' instead for node nesting.

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

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

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

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_cycle.cc b/source/blender/depsgraph/intern/builder/deg_builder_cycle.cc
index af5c4e7130b..d11a60b77dd 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_cycle.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_cycle.cc
@@ -182,20 +182,16 @@ void solve_cycles(CyclesSolverState *state)
         OperationNode *to = (OperationNode *)rel->to;
         eCyclicCheckVisitedState to_state = get_node_visited_state(to);
         if (to_state == NODE_IN_STACK) {
-          printf("Dependency cycle detected:\n");
-          printf("  '%s' depends on '%s' through '%s'\n",
-                 to->full_identifier().c_str(),
-                 node->full_identifier().c_str(),
-                 rel->name);
+          string cycle_str = "  " + to->full_identifier() + " depends on\n  " +
+                             node->full_identifier() + " via '" + rel->name + "'\n";
           StackEntry *current = entry;
           while (current->node != to) {
             BLI_assert(current != NULL);
-            printf("  '%s' depends on '%s' through '%s'\n",
-                   current->node->full_identifier().c_str(),
-                   current->from->node->full_identifier().c_str(),
-                   current->via_relation->name);
+            cycle_str += "  " + current->from->node->full_identifier() + " via '" +
+                         current->via_relation->name + "'\n";
             current = current->from;
           }
+          printf("Dependency cycle detected:\n%s", cycle_str.c_str());
           Relation *sacrificial_relation = select_relation_to_murder(rel, entry);
           sacrificial_relation->flag |= RELATION_FLAG_CYCLIC;
           ++state->num_cycles;
diff --git a/source/blender/depsgraph/intern/node/deg_node_operation.cc b/source/blender/depsgraph/intern/node/deg_node_operation.cc
index 54a5ecef35c..154563303ad 100644
--- a/source/blender/depsgraph/intern/node/deg_node_operation.cc
+++ b/source/blender/depsgraph/intern/node/deg_node_operation.cc
@@ -208,14 +208,11 @@ string OperationNode::identifier() const
  * used for logging and debug prints. */
 string OperationNode::full_identifier() const
 {
-  string owner_str = "";
-  if (owner->type == NodeType::BONE) {
-    owner_str = string(owner->owner->name) + "." + owner->name;
+  string owner_str = owner->owner->name;
+  if (owner->type == NodeType::BONE || !owner->name.empty()) {
+    owner_str += "/" + owner->name;
   }
-  else {
-    owner_str = owner->owner->name;
-  }
-  return owner_str + "." + identifier();
+  return owner_str + "/" + identifier();
 }
 
 void OperationNode::tag_update(Depsgraph *graph, eUpdateSource source)



More information about the Bf-blender-cvs mailing list