[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