Commit: fee813cd226679df1125d9e296fec34d7f07dce1
Author: Sergey Sharybin
Date:   Mon Mar 16 18:14:12 2015 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rBfee813cd226679df1125d9e296fec34d7f07dce1

Depsgraph: Code cleanup, de-duplicate some logging code

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

M       source/blender/depsgraph/intern/depsnode.h
M       source/blender/depsgraph/intern/depsnode_operation.cpp
M       source/blender/depsgraph/intern/depsnode_operation.h
M       source/blender/depsgraph/util/depsgraph_util_cycle.cpp

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

diff --git a/source/blender/depsgraph/intern/depsnode.h 
b/source/blender/depsgraph/intern/depsnode.h
index 25d04fb..8c153ec 100644
--- a/source/blender/depsgraph/intern/depsnode.h
+++ b/source/blender/depsgraph/intern/depsnode.h
@@ -86,6 +86,7 @@ struct DepsNode {
        virtual ~DepsNode();
 
        virtual string identifier() const;
+       string full_identifier() const;
 
        virtual void init(const ID * /*id*/,
                          const string &/*subdata*/) {}
diff --git a/source/blender/depsgraph/intern/depsnode_operation.cpp 
b/source/blender/depsgraph/intern/depsnode_operation.cpp
index bfe374d..de8755f 100644
--- a/source/blender/depsgraph/intern/depsnode_operation.cpp
+++ b/source/blender/depsgraph/intern/depsnode_operation.cpp
@@ -66,6 +66,21 @@ string OperationDepsNode::identifier() const
        return string(DEG_OPNAMES[opcode]) + "(" + name + ")";
 }
 
+/* Full node identifier, including owner name.
+ * used for logging and debug prints.
+ */
+string OperationDepsNode::full_identifier() const
+{
+       string owner_str = "";
+       if (owner->type == DEPSNODE_TYPE_BONE) {
+               owner_str = owner->owner->name + "." + owner->name;
+       }
+       else {
+               owner_str = owner->owner->name;
+       }
+       return owner_str + "." + identifier();
+}
+
 void OperationDepsNode::tag_update(Depsgraph *graph)
 {
        if (flag & DEPSOP_FLAG_NEEDS_UPDATE) {
diff --git a/source/blender/depsgraph/intern/depsnode_operation.h 
b/source/blender/depsgraph/intern/depsnode_operation.h
index 8990a1b..2b70ff0 100644
--- a/source/blender/depsgraph/intern/depsnode_operation.h
+++ b/source/blender/depsgraph/intern/depsnode_operation.h
@@ -55,6 +55,7 @@ struct OperationDepsNode : public DepsNode {
        ~OperationDepsNode();
 
        string identifier() const;
+       string full_identifier() const;
 
        void tag_update(Depsgraph *graph);
 
diff --git a/source/blender/depsgraph/util/depsgraph_util_cycle.cpp 
b/source/blender/depsgraph/util/depsgraph_util_cycle.cpp
index aafad0b..255385d 100644
--- a/source/blender/depsgraph/util/depsgraph_util_cycle.cpp
+++ b/source/blender/depsgraph/util/depsgraph_util_cycle.cpp
@@ -45,37 +45,6 @@ struct StackEntry {
        DepsRelation *via_relation;
 };
 
-static void deg_graph_print_cycle_rel(const OperationDepsNode *to,
-                                      const OperationDepsNode *from,
-                                      const DepsRelation *rel)
-{
-       string to_owner = "", from_owner = "";
-
-       /* NOTE: subdata name only matters for bones; all other components 
currently
-        * should just use the ID instead.
-        */
-       if (to->owner->type == DEPSNODE_TYPE_BONE) {
-               to_owner = to->owner->owner->name + "." + to->owner->name + ".";
-       }
-       else {
-               to_owner = to->owner->owner->name + ".";
-       }
-
-       if (from->owner->type == DEPSNODE_TYPE_BONE) {
-               from_owner = from->owner->owner->name + "." + from->owner->name 
+ ".";
-       }
-       else {
-               from_owner = from->owner->owner->name + ".";
-       }
-
-       printf("  '%s%s' depends on '%s%s' through '%s'\n",
-              to_owner.c_str(),
-              to->identifier().c_str(),
-              from_owner.c_str(),
-              from->identifier().c_str(),
-              rel->name.c_str());
-}
-
 void deg_graph_detect_cycles(Depsgraph *graph)
 {
        /* Not is not visited at all during traversal. */
@@ -127,14 +96,18 @@ void deg_graph_detect_cycles(Depsgraph *graph)
                                OperationDepsNode *to = (OperationDepsNode 
*)rel->to;
                                if (to->done == NODE_IN_STACK) {
                                        printf("Dependency cycle detected:\n");
-                                       deg_graph_print_cycle_rel(to, node, 
rel);
+                                       printf("  '%s' depends on '%s' through 
'%s'\n",
+                                              to->full_identifier().c_str(),
+                                              node->full_identifier().c_str(),
+                                              rel->name.c_str());
 
                                        StackEntry *current = &entry;
                                        while (current->node != to) {
                                                BLI_assert(current != NULL);
-                                               
deg_graph_print_cycle_rel(current->node,
-                                                                         
current->from->node,
-                                                                         
current->via_relation);
+                                               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.c_str());
                                                current = current->from;
                                        }
                                        /* TODO(sergey): So called roussian 
rlette cycle solver. */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to