Revision: 41522
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41522
Author:   blendix
Date:     2011-11-04 13:17:35 +0000 (Fri, 04 Nov 2011)
Log Message:
-----------
Depsgraph: add "Dependency Relations" operator to print the dependency graph to
the console, useful for debugging and understanding the relations.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_depsgraph.h
    trunk/blender/source/blender/blenkernel/intern/depsgraph.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/blenkernel/BKE_depsgraph.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_depsgraph.h     2011-11-04 
12:53:46 UTC (rev 41521)
+++ trunk/blender/source/blender/blenkernel/BKE_depsgraph.h     2011-11-04 
13:17:35 UTC (rev 41522)
@@ -133,6 +133,9 @@
                /* callback for editors module to do updates */
 void   DAG_editors_update_cb(void (*func)(struct Main *bmain, struct ID *id));
 
+               /* debugging */
+void   DAG_print_dependencies(struct Main *bmain, struct Scene *scene, struct 
Object *ob);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/blender/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/depsgraph.c  2011-11-04 
12:53:46 UTC (rev 41521)
+++ trunk/blender/source/blender/blenkernel/intern/depsgraph.c  2011-11-04 
13:17:35 UTC (rev 41522)
@@ -799,6 +799,7 @@
 }
 
 static int ugly_hack_sorry= 1; // prevent type check
+static int dag_print_dependencies= 0; // debugging
 
 /* no checking of existence, use dag_find_node first or dag_get_node */
 DagNode * dag_add_node (DagForest *forest, void * fob)
@@ -926,7 +927,6 @@
                return ((bPoseChannel*)(node->ob))->name;
 }
 
-#if 0
 static void dag_node_print_dependencies(DagNode *node)
 {
        DagAdjList *itA;
@@ -937,7 +937,6 @@
                printf("  %s through %s\n", dag_node_name(itA->node), 
itA->name);
        printf("\n");
 }
-#endif
 
 static int dag_node_print_dependency_recurs(DagNode *node, DagNode *endnode)
 {
@@ -998,6 +997,11 @@
        DagNode *node;
        DagAdjList *itA;
 
+       /* debugging print */
+       if(dag_print_dependencies)
+               for(node = dag->DagNode.first; node; node= node->next)
+                       dag_node_print_dependencies(node);
+
        /* tag nodes unchecked */
        for(node = dag->DagNode.first; node; node= node->next)
                node->color= DAG_WHITE;
@@ -2834,5 +2838,22 @@
        ugly_hack_sorry= 1;
 }
 
+/* ************************ DAG DEBUGGING ********************* */
 
+void DAG_print_dependencies(Main *bmain, Scene *scene, Object *ob)
+{
+       /* utility for debugging dependencies */
+       dag_print_dependencies= 1;
 
+       if(ob && (ob->mode & OB_MODE_POSE)) {
+               printf("\nDEPENDENCY RELATIONS for %s\n\n", ob->id.name+2);
+               DAG_pose_sort(ob);
+       }
+       else {
+               printf("\nDEPENDENCY RELATIONS for %s\n\n", scene->id.name+2);
+               DAG_scene_sort(bmain, scene);
+       }
+       
+       dag_print_dependencies= 0;
+}
+

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c    
2011-11-04 12:53:46 UTC (rev 41521)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c    
2011-11-04 13:17:35 UTC (rev 41522)
@@ -3450,6 +3450,28 @@
        ot->exec= memory_statistics_exec;
 }
 
+/* ************************** memory statistics for testing ***************** 
*/
+
+static int dependency_relations_exec(bContext *C, wmOperator *UNUSED(op))
+{
+       Main *bmain= CTX_data_main(C);
+       Scene *scene= CTX_data_scene(C);
+       Object *ob= CTX_data_active_object(C);
+
+       DAG_print_dependencies(bmain, scene, ob);
+
+       return OPERATOR_FINISHED;
+}
+
+static void WM_OT_dependency_relations(wmOperatorType *ot)
+{
+       ot->name= "Dependency Relations";
+       ot->idname= "WM_OT_dependency_relations";
+       ot->description= "Print dependency graph relations to the console";
+       
+       ot->exec= dependency_relations_exec;
+}
+
 /* ******************************************************* */
 
 static int wm_ndof_sensitivity_exec(bContext *UNUSED(C), wmOperator *op)
@@ -3532,6 +3554,7 @@
        WM_operatortype_append(WM_OT_save_mainfile);
        WM_operatortype_append(WM_OT_redraw_timer);
        WM_operatortype_append(WM_OT_memory_statistics);
+       WM_operatortype_append(WM_OT_dependency_relations);
        WM_operatortype_append(WM_OT_debug_menu);
        WM_operatortype_append(WM_OT_splash);
        WM_operatortype_append(WM_OT_search_menu);

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

Reply via email to