[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14428] trunk/blender/source/blender:

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Apr 15 15:07:57 CEST 2008


Revision: 14428
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14428
Author:   blendix
Date:     2008-04-15 15:07:56 +0200 (Tue, 15 Apr 2008)

Log Message:
-----------

Bug #8950: dependency cycles weren't always printed correct. For
debugging, also added a name for each dependency relation, and when
a cycle is detected it now prints the full cycle to the console.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/depsgraph_private.h
    trunk/blender/source/blender/blenkernel/intern/depsgraph.c
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/src/drawdeps.c

Modified: trunk/blender/source/blender/blenkernel/depsgraph_private.h
===================================================================
--- trunk/blender/source/blender/blenkernel/depsgraph_private.h	2008-04-15 09:20:13 UTC (rev 14427)
+++ trunk/blender/source/blender/blenkernel/depsgraph_private.h	2008-04-15 13:07:56 UTC (rev 14428)
@@ -54,6 +54,7 @@
 	short type;
 	int count;			// number of identical arcs
 	unsigned int lay;   // for flushing redraw/rebuild events
+	char *name;
 	struct DagAdjList *next;
 } DagAdjList;
 
@@ -117,7 +118,7 @@
 DagNode * dag_add_node (DagForest *forest,void * fob);
 DagNode * dag_get_node (DagForest *forest,void * fob);
 DagNode * dag_get_sub_node (DagForest *forest,void * fob);
-void dag_add_relation(DagForest *forest, DagNode *fob1, DagNode *fob2, short rel);
+void dag_add_relation(DagForest *forest, DagNode *fob1, DagNode *fob2, short rel, char *name);
 
 void graph_bfs(void);
 

Modified: trunk/blender/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/depsgraph.c	2008-04-15 09:20:13 UTC (rev 14427)
+++ trunk/blender/source/blender/blenkernel/intern/depsgraph.c	2008-04-15 13:07:56 UTC (rev 14428)
@@ -327,9 +327,9 @@
 							ob = *oba;
 							node1 = dag_get_node(dag, ob);
 							if (ob->type == OB_ARMATURE)
-								dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB);
+								dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Python Ipo Driver");
 							else
-								dag_add_relation(dag, node1, node, isdata?DAG_RL_OB_DATA:DAG_RL_OB_OB);
+								dag_add_relation(dag, node1, node, isdata?DAG_RL_OB_DATA:DAG_RL_OB_OB, "Python Ipo Driver");
 							oba++;
 						}
 
@@ -340,9 +340,9 @@
 			else if (icu->driver->ob) {
 				node1 = dag_get_node(dag, icu->driver->ob);
 				if(icu->driver->blocktype==ID_AR)
-					dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB);
+					dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Ipo Driver");
 				else
-					dag_add_relation(dag, node1, node, isdata?DAG_RL_OB_DATA:DAG_RL_OB_OB);
+					dag_add_relation(dag, node1, node, isdata?DAG_RL_OB_DATA:DAG_RL_OB_OB, "Ipo Driver");
 			}
 		}
 	}
@@ -363,7 +363,7 @@
 	
 	if ((ob->data) && (mask&DAG_RL_DATA)) {
 		node2 = dag_get_node(dag,ob->data);
-		dag_add_relation(dag,node,node2,DAG_RL_DATA);
+		dag_add_relation(dag,node,node2,DAG_RL_DATA, "Object-Data Relation");
 		node2->first_ancestor = ob;
 		node2->ancestor_count += 1;
 	}
@@ -388,11 +388,11 @@
 								node3 = dag_get_node(dag, ct->tar);
 								
 								if (ct->subtarget[0])
-									dag_add_relation(dag,node3,node, DAG_RL_OB_DATA|DAG_RL_DATA_DATA);
+									dag_add_relation(dag,node3,node, DAG_RL_OB_DATA|DAG_RL_DATA_DATA, cti->name);
 								else if(ELEM(con->type, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_CLAMPTO)) 	
-									dag_add_relation(dag,node3,node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA);
+									dag_add_relation(dag,node3,node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, cti->name);
 								else
-									dag_add_relation(dag,node3,node, DAG_RL_OB_DATA);
+									dag_add_relation(dag,node3,node, DAG_RL_OB_DATA, cti->name);
 							}
 						}
 						
@@ -440,7 +440,7 @@
 				for(amod= strip->modifiers.first; amod; amod= amod->next) {
 					if(amod->ob) {
 						node2 = dag_get_node(dag, amod->ob);
-						dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA);
+						dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "NLA Strip Modifier");
 					}
 				}
 			}
@@ -460,46 +460,46 @@
 		
 		switch(ob->partype) {
 			case PARSKEL:
-				dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_OB);
+				dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_OB, "Parent");
 				break;
 			case PARVERT1: case PARVERT3: case PARBONE:
-				dag_add_relation(dag,node2,node,DAG_RL_DATA_OB|DAG_RL_OB_OB);
+				dag_add_relation(dag,node2,node,DAG_RL_DATA_OB|DAG_RL_OB_OB, "Vertex Parent");
 				break;
 			default:
 				if(ob->parent->type==OB_LATTICE) 
-					dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_OB);
+					dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_OB, "Lattice Parent");
 				else if(ob->parent->type==OB_CURVE) {
 					Curve *cu= ob->parent->data;
 					if(cu->flag & CU_PATH) 
-						dag_add_relation(dag,node2,node,DAG_RL_DATA_OB|DAG_RL_OB_OB);
+						dag_add_relation(dag,node2,node,DAG_RL_DATA_OB|DAG_RL_OB_OB, "Curve Parent");
 					else
-						dag_add_relation(dag,node2,node,DAG_RL_OB_OB);
+						dag_add_relation(dag,node2,node,DAG_RL_OB_OB, "Curve Parent");
 				}
 					else
-						dag_add_relation(dag,node2,node,DAG_RL_OB_OB);
+						dag_add_relation(dag,node2,node,DAG_RL_OB_OB, "Curve Parent");
 		}
 		/* exception case: parent is duplivert */
 		if(ob->type==OB_MBALL && (ob->parent->transflag & OB_DUPLIVERTS)) {
-			dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_OB);
+			dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_OB, "Duplivert");
 		}
 		
 		addtoroot = 0;
 	}
 	if (ob->track) {
 		node2 = dag_get_node(dag,ob->track);
-		dag_add_relation(dag,node2,node,DAG_RL_OB_OB);
+		dag_add_relation(dag,node2,node,DAG_RL_OB_OB, "Track To");
 		addtoroot = 0;
 	}
 	if (ob->proxy) {
 		node2 = dag_get_node(dag, ob->proxy);
-		dag_add_relation(dag, node, node2, DAG_RL_DATA_DATA|DAG_RL_OB_OB);
+		dag_add_relation(dag, node, node2, DAG_RL_DATA_DATA|DAG_RL_OB_OB, "Proxy");
 		/* inverted relation, so addtoroot shouldn't be set to zero */
 	}
 	if (ob->type==OB_CAMERA) {
 		Camera *cam = (Camera *)ob->data;
 		if (cam->dof_ob) {
 			node2 = dag_get_node(dag, cam->dof_ob);
-			dag_add_relation(dag,node2,node,DAG_RL_OB_OB);
+			dag_add_relation(dag,node2,node,DAG_RL_OB_OB, "Camera DoF");
 		}
 	}
 	if (ob->transflag & OB_DUPLI) {
@@ -509,7 +509,7 @@
 				if(go->ob) {
 					node2 = dag_get_node(dag, go->ob);
 					/* node2 changes node1, this keeps animations updated in groups?? not logical? */
-					dag_add_relation(dag, node2, node, DAG_RL_OB_OB);
+					dag_add_relation(dag, node2, node, DAG_RL_OB_OB, "Dupligroup");
 				}
 			}
 		}
@@ -526,7 +526,7 @@
 					Object *ob1= base->object;
 					if((ob1->pd->deflect) && (ob1 != ob))  {
 						node2 = dag_get_node(dag, ob1);					
-						dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA);						
+						dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Softbody Collision");
 					}
 				}
 			}
@@ -537,18 +537,18 @@
 		Object *mom= find_basis_mball(ob);
 		if(mom!=ob) {
 			node2 = dag_get_node(dag, mom);
-			dag_add_relation(dag,node,node2,DAG_RL_DATA_DATA|DAG_RL_OB_DATA);  // mom depends on children!
+			dag_add_relation(dag,node,node2,DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Metaball");  // mom depends on children!
 		}
 	}
 	else if (ob->type==OB_CURVE) {
 		Curve *cu= ob->data;
 		if(cu->bevobj) {
 			node2 = dag_get_node(dag, cu->bevobj);
-			dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_DATA);
+			dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Curve Bevel");
 		}
 		if(cu->taperobj) {
 			node2 = dag_get_node(dag, cu->taperobj);
-			dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_DATA);
+			dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Curve Taper");
 		}
 		if(cu->ipo)
 			dag_add_driver_relation(cu->ipo, dag, node, 1);
@@ -558,7 +558,7 @@
 		Curve *cu= ob->data;
 		if(cu->textoncurve) {
 			node2 = dag_get_node(dag, cu->textoncurve);
-			dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_DATA);
+			dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Texture On Curve");
 		}
 	}
 	else if(ob->type==OB_MESH) {
@@ -569,7 +569,7 @@
 			
 			/* ob location depends on itself */
 			if((paf->flag & PAF_STATIC)==0)
-				dag_add_relation(dag, node, node, DAG_RL_OB_DATA);
+				dag_add_relation(dag, node, node, DAG_RL_OB_DATA, "Particle-Object Relation");
 			
 			listb= pdInitEffectors(ob, paf->group);		/* note, makes copy... */
 			if(listb) {
@@ -580,9 +580,9 @@
 					if(pd->forcefield) {
 						node2 = dag_get_node(dag, ob1);
 						if(pd->forcefield==PFIELD_GUIDE)
-							dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA);
+							dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Particle Field");
 						else
-							dag_add_relation(dag, node2, node, DAG_RL_OB_DATA);
+							dag_add_relation(dag, node2, node, DAG_RL_OB_DATA, "Particle Field");
 					}
 				}
 				
@@ -599,25 +599,25 @@
 		for(; psys; psys=psys->next) {
 			ParticleSettings *part= psys->part;
 			
-			dag_add_relation(dag, node, node, DAG_RL_OB_DATA);
+			dag_add_relation(dag, node, node, DAG_RL_OB_DATA, "Particle-Object Relation");
 
 			if(part->phystype==PART_PHYS_KEYED && psys->keyed_ob &&
 			   BLI_findlink(&psys->keyed_ob->particlesystem,psys->keyed_psys-1)) {
 				node2 = dag_get_node(dag, psys->keyed_ob);
-				dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA);
+				dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA, "Particle Keyed Physics");
 			}
 
 			if(part->draw_as == PART_DRAW_OB && part->dup_ob) {
 				node2 = dag_get_node(dag, part->dup_ob);
-				dag_add_relation(dag, node, node2, DAG_RL_OB_OB);
+				dag_add_relation(dag, node, node2, DAG_RL_OB_OB, "Particle Object Visualisation");
 				if(part->dup_ob->type == OB_MBALL)
-					dag_add_relation(dag, node, node2, DAG_RL_DATA_DATA);
+					dag_add_relation(dag, node, node2, DAG_RL_DATA_DATA, "Particle Object Visualisation");
 			}
 
 			if(part->draw_as == PART_DRAW_GR && part->dup_group) {
 				for(go=part->dup_group->gobject.first; go; go=go->next) {
 					node2 = dag_get_node(dag, go->ob);
-					dag_add_relation(dag, node, node2, DAG_RL_OB_OB);
+					dag_add_relation(dag, node, node2, DAG_RL_OB_OB, "Particle Group Visualisation");
 				}
 			}
 
@@ -632,22 +632,22 @@
 					if(nec->type & PSYS_EC_EFFECTOR) {
 						node2 = dag_get_node(dag, ob1);
 						if(ob1->pd->forcefield==PFIELD_GUIDE)
-							dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA);
+							dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Particle Field");
 						else
-							dag_add_relation(dag, node2, node, DAG_RL_OB_DATA);
+							dag_add_relation(dag, node2, node, DAG_RL_OB_DATA, "Particle Field");
 					}
 					else if(nec->type & PSYS_EC_DEFLECT) {
 						node2 = dag_get_node(dag, ob1);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list