[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41522] trunk/blender/source/blender: Depsgraph: add "Dependency Relations" operator to print the dependency graph to

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Nov 4 14:17:36 CET 2011


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);




More information about the Bf-blender-cvs mailing list