[Bf-blender-cvs] [547d31c8da1] blender2.8: Depsgraph: minor renaming and refactor of API for adding evaluation flags.

Alexander Gavrilov noreply at git.blender.org
Wed Oct 24 12:45:26 CEST 2018


Commit: 547d31c8da1fcb938e91887909c5e2f3b3d180d5
Author: Alexander Gavrilov
Date:   Wed Oct 24 12:31:24 2018 +0300
Branches: blender2.8
https://developer.blender.org/rB547d31c8da1fcb938e91887909c5e2f3b3d180d5

Depsgraph: minor renaming and refactor of API for adding evaluation flags.

===================================================================

M	source/blender/depsgraph/DEG_depsgraph_build.h
M	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M	source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M	source/blender/depsgraph/intern/builder/deg_builder_relations.h
M	source/blender/depsgraph/intern/depsgraph_build.cc
M	source/blender/modifiers/intern/MOD_array.c
M	source/blender/modifiers/intern/MOD_curve.c
M	source/blender/modifiers/intern/MOD_datatransfer.c
M	source/blender/modifiers/intern/MOD_shrinkwrap.c

===================================================================

diff --git a/source/blender/depsgraph/DEG_depsgraph_build.h b/source/blender/depsgraph/DEG_depsgraph_build.h
index 4975f18f4ce..53138fc7c40 100644
--- a/source/blender/depsgraph/DEG_depsgraph_build.h
+++ b/source/blender/depsgraph/DEG_depsgraph_build.h
@@ -141,11 +141,11 @@ void DEG_add_object_relation(struct DepsNodeHandle *node,
                              struct Object *object,
                              eDepsObjectComponentType component,
                              const char *description);
-void DEG_add_object_customdata_relation(struct DepsNodeHandle *node,
-                             struct Object *object,
-                             eDepsObjectComponentType component,
-                             uint64_t customdata_mask,
-                             const char *description);
+void DEG_add_object_relation_with_customdata(struct DepsNodeHandle *node,
+                                             struct Object *object,
+                                             eDepsObjectComponentType component,
+                                             uint64_t customdata_mask,
+                                             const char *description);
 void DEG_add_bone_relation(struct DepsNodeHandle *handle,
                            struct Object *object,
                            const char *bone_name,
@@ -156,9 +156,9 @@ void DEG_add_object_cache_relation(struct DepsNodeHandle *handle,
                                    eDepsObjectComponentType component,
                                    const char *description);
 
+void DEG_add_special_eval_flag(struct DepsNodeHandle *handle, struct ID *id, short flag);
 
 struct Depsgraph *DEG_get_graph_from_handle(struct DepsNodeHandle *handle);
-void DEG_add_special_eval_flag(struct Depsgraph *graph, struct ID *id, short flag);
 
 /* ************************************************ */
 
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index ff3009a6ce5..30301cdf29a 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -667,7 +667,6 @@ void DepsgraphNodeBuilder::build_object_data(
 	if (object->data == NULL) {
 		return;
 	}
-	IDDepsNode *id_node = graph_->find_id_node(&object->id);
 	/* type-specific data. */
 	switch (object->type) {
 		case OB_MESH:
@@ -678,15 +677,6 @@ void DepsgraphNodeBuilder::build_object_data(
 		case OB_LATTICE:
 		case OB_GPENCIL:
 			build_object_data_geometry(object, is_object_visible);
-			/* TODO(sergey): Only for until we support granular
-			 * update of curves.
-			 */
-			if (object->type == OB_FONT) {
-				Curve *curve = (Curve *)object->data;
-				if (curve->textoncurve) {
-					id_node->eval_flags |= DAG_EVAL_NEED_CURVE_PATH;
-				}
-			}
 			break;
 		case OB_ARMATURE:
 			if (ID_IS_LINKED(object) && object->proxy_from != NULL) {
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index c40df4cb74e..e0c98b40186 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -286,6 +286,17 @@ void DepsgraphRelationBuilder::add_customdata_mask(const ComponentKey &key, uint
 	}
 }
 
+void DepsgraphRelationBuilder::add_special_eval_flag(ID *id, short flag)
+{
+	DEG::IDDepsNode *id_node = graph_->find_id_node(id);
+	if (id_node == NULL) {
+		BLI_assert(!"ID should always be valid");
+	}
+	else {
+		id_node->eval_flags |= flag;
+	}
+}
+
 DepsRelation *DepsgraphRelationBuilder::add_time_relation(
         TimeSourceDepsNode *timesrc,
         DepsNode *node_to,
@@ -670,6 +681,15 @@ void DepsgraphRelationBuilder::build_object_data(Object *object)
 		case OB_GPENCIL:
 		{
 			build_object_data_geometry(object);
+			/* TODO(sergey): Only for until we support granular
+			 * update of curves.
+			 */
+			if (object->type == OB_FONT) {
+				Curve *curve = (Curve *)object->data;
+				if (curve->textoncurve) {
+					add_special_eval_flag(&curve->textoncurve->id, DAG_EVAL_NEED_CURVE_PATH);
+				}
+			}
 			break;
 		}
 		case OB_ARMATURE:
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h
index d3c7b0ebfaf..32330f5680d 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h
@@ -201,6 +201,7 @@ struct DepsgraphRelationBuilder
 	                                       bool check_unique = false);
 
 	void add_customdata_mask(const ComponentKey &key, uint64_t mask);
+	void add_special_eval_flag(ID *object, short flag);
 
 	void build_id(ID *id);
 	void build_layer_collections(ListBase *lb);
diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc b/source/blender/depsgraph/intern/depsgraph_build.cc
index 957ca1a4275..e38cebbf525 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build.cc
@@ -131,11 +131,11 @@ void DEG_add_object_relation(DepsNodeHandle *handle,
 	                                              description);
 }
 
-void DEG_add_object_customdata_relation(DepsNodeHandle *handle,
-                             Object *object,
-                             eDepsObjectComponentType component,
-                             uint64_t customdata_mask,
-                             const char *description)
+void DEG_add_object_relation_with_customdata(DepsNodeHandle *handle,
+                                             Object *object,
+                                             eDepsObjectComponentType component,
+                                             uint64_t customdata_mask,
+                                             const char *description)
 {
 	DEG::eDepsNode_Type type = deg_build_object_component_type(component);
 	DEG::ComponentKey comp_key(&object->id, type);
@@ -178,26 +178,17 @@ void DEG_add_bone_relation(DepsNodeHandle *handle,
 	                                              description);
 }
 
-struct Depsgraph *DEG_get_graph_from_handle(struct DepsNodeHandle *handle)
+void DEG_add_special_eval_flag(struct DepsNodeHandle *handle, ID *id, short flag)
 {
 	DEG::DepsNodeHandle *deg_handle = get_handle(handle);
-	DEG::DepsgraphRelationBuilder *relation_builder = deg_handle->builder;
-	return reinterpret_cast<Depsgraph *>(relation_builder->getGraph());
+	deg_handle->builder->add_special_eval_flag(id, flag);
 }
 
-void DEG_add_special_eval_flag(Depsgraph *graph, ID *id, short flag)
+struct Depsgraph *DEG_get_graph_from_handle(struct DepsNodeHandle *handle)
 {
-	DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(graph);
-	if (graph == NULL) {
-		BLI_assert(!"Graph should always be valid");
-		return;
-	}
-	DEG::IDDepsNode *id_node = deg_graph->find_id_node(id);
-	if (id_node == NULL) {
-		BLI_assert(!"ID should always be valid");
-		return;
-	}
-	id_node->eval_flags |= flag;
+	DEG::DepsNodeHandle *deg_handle = get_handle(handle);
+	DEG::DepsgraphRelationBuilder *relation_builder = deg_handle->builder;
+	return reinterpret_cast<Depsgraph *>(relation_builder->getGraph());
 }
 
 /* ******************** */
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c
index 2b8c1dd8c28..9cd642e1a3b 100644
--- a/source/blender/modifiers/intern/MOD_array.c
+++ b/source/blender/modifiers/intern/MOD_array.c
@@ -101,9 +101,8 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
 		DEG_add_object_relation(ctx->node, amd->end_cap, DEG_OB_COMP_GEOMETRY, "Array Modifier End Cap");
 	}
 	if (amd->curve_ob) {
-		struct Depsgraph *depsgraph = DEG_get_graph_from_handle(ctx->node);
 		DEG_add_object_relation(ctx->node, amd->curve_ob, DEG_OB_COMP_GEOMETRY, "Array Modifier Curve");
-		DEG_add_special_eval_flag(depsgraph, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH);
+		DEG_add_special_eval_flag(ctx->node, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH);
 	}
 	if (amd->offset_ob != NULL) {
 		DEG_add_object_relation(ctx->node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Array Modifier Offset");
diff --git a/source/blender/modifiers/intern/MOD_curve.c b/source/blender/modifiers/intern/MOD_curve.c
index b74b63e2478..02ddd3a180e 100644
--- a/source/blender/modifiers/intern/MOD_curve.c
+++ b/source/blender/modifiers/intern/MOD_curve.c
@@ -97,9 +97,8 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
 		/* TODO(sergey): Currently path is evaluated as a part of modifier stack,
 		 * might be changed in the future.
 		 */
-		struct Depsgraph *depsgraph = DEG_get_graph_from_handle(ctx->node);
 		DEG_add_object_relation(ctx->node, cmd->object, DEG_OB_COMP_GEOMETRY, "Curve Modifier");
-		DEG_add_special_eval_flag(depsgraph, &cmd->object->id, DAG_EVAL_NEED_CURVE_PATH);
+		DEG_add_special_eval_flag(ctx->node, &cmd->object->id, DAG_EVAL_NEED_CURVE_PATH);
 	}
 
 	DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Curve Modifier");
diff --git a/source/blender/modifiers/intern/MOD_datatransfer.c b/source/blender/modifiers/intern/MOD_datatransfer.c
index 6c99b5d95b3..b8146d3fe41 100644
--- a/source/blender/modifiers/intern/MOD_datatransfer.c
+++ b/source/blender/modifiers/intern/MOD_datatransfer.c
@@ -131,7 +131,7 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
 	if (dtmd->ob_source != NULL) {
 		CustomDataMask mask = BKE_object_data_transfer_dttypes_to_cdmask(dtmd->data_types);
 
-		DEG_add_object_customdata_relation(ctx->node, dtmd->ob_source, DEG_OB_COMP_GEOMETRY, mask, "DataTransfer Modifier");
+		DEG_add_object_relation_with_customdata(ctx->node, dtmd->ob_source, DEG_OB_COMP_GEOMETRY, mask, "DataTransfer Modifier");
 	}
 }
 
diff --git a/source/blender/modifiers/intern/MOD_shrinkwrap.c b/source/blender/modifiers/intern/MOD_shrinkwrap.c
index 4ba33461bbd..b5861399467 100644
--- a/source/blender/modifiers/intern/MOD_shrinkwrap.c
+++ b/source/blender/modifiers/intern/MOD_shrinkwrap.c
@@ -149,11 +149,11 @@ static void update

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list