[Bf-blender-cvs] [8a4e148] depsgraph_refactor: Depsgraph: Correction to previous commit: seems we can not avoid explicit init/exit operation creation
Sergey Sharybin
noreply at git.blender.org
Wed Jan 7 13:49:14 CET 2015
Commit: 8a4e1483f93fec08afc8151bfed37d9b3fae3063
Author: Sergey Sharybin
Date: Wed Jan 7 17:47:52 2015 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rB8a4e1483f93fec08afc8151bfed37d9b3fae3063
Depsgraph: Correction to previous commit: seems we can not avoid explicit init/exit operation creation
===================================================================
M source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
M source/blender/depsgraph/intern/depsgraph_build_relations.cpp
===================================================================
diff --git a/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp b/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
index acb7c51..7f20537 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
@@ -717,7 +717,15 @@ void DepsgraphNodeBuilder::build_obdata_geom(Scene *scene, Object *ob)
}
break;
}
-
+
+ add_operation_node(obdata, DEPSNODE_TYPE_GEOMETRY,
+ DEPSOP_TYPE_POST, NULL,
+ DEG_OPCODE_PLACEHOLDER, "Eval Done");
+
+ add_operation_node(&ob->id, DEPSNODE_TYPE_GEOMETRY,
+ DEPSOP_TYPE_INIT, NULL,
+ DEG_OPCODE_PLACEHOLDER, "Eval Init");
+
// TODO: "Done" operation
/* ShapeKeys */
diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
index 68de63e..bf9d764 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
@@ -1191,11 +1191,18 @@ void DepsgraphRelationBuilder::build_obdata_geom(Scene *scene, Object *ob)
/* get nodes for result of obdata's evaluation, and geometry evaluation on object */
ComponentKey geom_key(&ob->id, DEPSNODE_TYPE_GEOMETRY);
ComponentKey obdata_geom_key(obdata, DEPSNODE_TYPE_GEOMETRY);
- OperationKey geom_eval_key(obdata, DEPSNODE_TYPE_GEOMETRY, DEG_OPCODE_PLACEHOLDER, "Geometry Eval");
-
+
+ /* Link object data evaluation node to exit operation. */
+ OperationKey obdata_geom_eval_key(obdata, DEPSNODE_TYPE_GEOMETRY, DEG_OPCODE_PLACEHOLDER, "Geometry Eval");
+ OperationKey obdata_geom_done_key(obdata, DEPSNODE_TYPE_GEOMETRY, DEG_OPCODE_PLACEHOLDER, "Eval Done");
+ add_relation(obdata_geom_eval_key, obdata_geom_done_key, DEPSREL_TYPE_DATABLOCK, "ObData Geom Eval Done");
+
/* link components to each other */
add_relation(obdata_geom_key, geom_key, DEPSREL_TYPE_DATABLOCK, "Object Geometry Base Data");
+ /* Init operation of object-level geometry evaluation. */
+ OperationKey geom_init_key(&ob->id, DEPSNODE_TYPE_GEOMETRY, DEG_OPCODE_PLACEHOLDER, "Eval Init");
+
/* type-specific node/links */
switch (ob->type) {
case OB_MESH:
@@ -1269,7 +1276,7 @@ void DepsgraphRelationBuilder::build_obdata_geom(Scene *scene, Object *ob)
}
else {
/* Stack relation: first modifier depends on the geometry. */
- add_relation(geom_eval_key, mod_key, DEPSREL_TYPE_GEOMETRY_EVAL, "Modifier Stack");
+ add_relation(geom_init_key, mod_key, DEPSREL_TYPE_GEOMETRY_EVAL, "Modifier Stack");
}
if (mti->updateDepsgraph) {
@@ -1315,8 +1322,8 @@ void DepsgraphRelationBuilder::build_obdata_geom(Scene *scene, Object *ob)
OperationKey mod_key(&ob->id, DEPSNODE_TYPE_GEOMETRY, DEG_OPCODE_GEOMETRY_MODIFIER, md->name);
add_relation(mod_key, obdata_ubereval_key, DEPSREL_TYPE_OPERATION, "Object Geometry UberEval");
}
- else if (obdata != NULL) {
- add_relation(geom_eval_key, obdata_ubereval_key, DEPSREL_TYPE_OPERATION, "Object Geometry UberEval");
+ else {
+ add_relation(geom_init_key, obdata_ubereval_key, DEPSREL_TYPE_OPERATION, "Object Geometry UberEval");
}
}
}
More information about the Bf-blender-cvs
mailing list