[Bf-blender-cvs] [7e66a3d] depsgraph_cleanup: Depsgraph: Simplify some destructors

Sergey Sharybin noreply at git.blender.org
Thu May 26 18:04:08 CEST 2016


Commit: 7e66a3d78191ce5622a8ab887b33ff19bdbedce0
Author: Sergey Sharybin
Date:   Thu May 26 17:44:59 2016 +0200
Branches: depsgraph_cleanup
https://developer.blender.org/rB7e66a3d78191ce5622a8ab887b33ff19bdbedce0

Depsgraph: Simplify some destructors

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

M	source/blender/depsgraph/intern/depsgraph.cc
M	source/blender/depsgraph/intern/nodes/deg_node.cc
M	source/blender/depsgraph/intern/nodes/deg_node_component.cc

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

diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc
index 8207ea6..79fc273 100644
--- a/source/blender/depsgraph/intern/depsgraph.cc
+++ b/source/blender/depsgraph/intern/depsgraph.cc
@@ -249,6 +249,12 @@ DepsNode *Depsgraph::find_node_from_pointer(const PointerRNA *ptr,
 
 /* Node Management ---------------------------- */
 
+static void id_node_deleter(void *value)
+{
+	IDDepsNode *id_node = reinterpret_cast<IDDepsNode *>(value);
+	OBJECT_GUARDED_DELETE(id_node, IDDepsNode);
+}
+
 RootDepsNode *Depsgraph::add_root_node()
 {
 	if (!root_node) {
@@ -347,12 +353,7 @@ void Depsgraph::remove_id_node(const ID *id)
 
 void Depsgraph::clear_id_nodes()
 {
-	GHASH_FOREACH_BEGIN(IDDepsNode *, id_node, id_hash)
-	{
-		OBJECT_GUARDED_DELETE(id_node, IDDepsNode);
-	}
-	GHASH_FOREACH_END();
-	BLI_ghash_clear(id_hash, NULL, NULL);
+	BLI_ghash_clear(id_hash, NULL, id_node_deleter);
 }
 
 /* Add new relationship between two nodes. */
diff --git a/source/blender/depsgraph/intern/nodes/deg_node.cc b/source/blender/depsgraph/intern/nodes/deg_node.cc
index 5e6672d..f8fcec8 100644
--- a/source/blender/depsgraph/intern/nodes/deg_node.cc
+++ b/source/blender/depsgraph/intern/nodes/deg_node.cc
@@ -144,26 +144,32 @@ static DepsNodeFactoryImpl<TimeSourceDepsNode> DNTI_TIMESOURCE;
 
 static unsigned int id_deps_node_hash_key(const void *key_v)
 {
-    const IDDepsNode::ComponentIDKey *key =
-            reinterpret_cast<const IDDepsNode::ComponentIDKey *>(key_v);
-    return hash_combine(BLI_ghashutil_uinthash(key->type),
-                        BLI_ghashutil_strhash_p(key->name.c_str()));
+	const IDDepsNode::ComponentIDKey *key =
+	        reinterpret_cast<const IDDepsNode::ComponentIDKey *>(key_v);
+	return hash_combine(BLI_ghashutil_uinthash(key->type),
+	                    BLI_ghashutil_strhash_p(key->name.c_str()));
 }
 
 static bool id_deps_node_hash_key_cmp(const void *a, const void *b)
 {
-    const IDDepsNode::ComponentIDKey *key_a =
-            reinterpret_cast<const IDDepsNode::ComponentIDKey *>(a);
-    const IDDepsNode::ComponentIDKey *key_b =
-            reinterpret_cast<const IDDepsNode::ComponentIDKey *>(b);
-    return !(*key_a == *key_b);
+	const IDDepsNode::ComponentIDKey *key_a =
+	        reinterpret_cast<const IDDepsNode::ComponentIDKey *>(a);
+	const IDDepsNode::ComponentIDKey *key_b =
+	        reinterpret_cast<const IDDepsNode::ComponentIDKey *>(b);
+	return !(*key_a == *key_b);
 }
 
 static void id_deps_node_hash_key_free(void *key_v)
 {
-    typedef IDDepsNode::ComponentIDKey ComponentIDKey;
-    ComponentIDKey *key = reinterpret_cast<ComponentIDKey *>(key_v);
-    OBJECT_GUARDED_DELETE(key, ComponentIDKey);
+	typedef IDDepsNode::ComponentIDKey ComponentIDKey;
+	ComponentIDKey *key = reinterpret_cast<ComponentIDKey *>(key_v);
+	OBJECT_GUARDED_DELETE(key, ComponentIDKey);
+}
+
+static void id_deps_node_hash_value_free(void *value_v)
+{
+	ComponentDepsNode *comp_node = reinterpret_cast<ComponentDepsNode *>(value_v);
+	OBJECT_GUARDED_DELETE(comp_node, ComponentDepsNode);
 }
 
 /* Initialize 'id' node - from pointer data given. */
@@ -228,12 +234,9 @@ void IDDepsNode::remove_component(eDepsNode_Type type, const string &name)
 
 void IDDepsNode::clear_components()
 {
-	GHASH_FOREACH_BEGIN(ComponentDepsNode *, comp_node, components)
-	{
-		OBJECT_GUARDED_DELETE(comp_node, ComponentDepsNode);
-	}
-	GHASH_FOREACH_END();
-	BLI_ghash_clear(components, id_deps_node_hash_key_free, NULL);
+	BLI_ghash_clear(components,
+	                id_deps_node_hash_key_free,
+	                id_deps_node_hash_value_free);
 }
 
 void IDDepsNode::tag_update(Depsgraph *graph)
diff --git a/source/blender/depsgraph/intern/nodes/deg_node_component.cc b/source/blender/depsgraph/intern/nodes/deg_node_component.cc
index 2757116..ad77117 100644
--- a/source/blender/depsgraph/intern/nodes/deg_node_component.cc
+++ b/source/blender/depsgraph/intern/nodes/deg_node_component.cc
@@ -77,6 +77,12 @@ static void comp_node_hash_key_free(void *key_v)
 	OBJECT_GUARDED_DELETE(key, OperationIDKey);
 }
 
+static void comp_node_hash_value_free(void *value_v)
+{
+	OperationDepsNode *op_node = reinterpret_cast<OperationDepsNode *>(value_v);
+	OBJECT_GUARDED_DELETE(op_node, OperationDepsNode);
+}
+
 ComponentDepsNode::ComponentDepsNode() :
     entry_operation(NULL),
     exit_operation(NULL),
@@ -197,12 +203,9 @@ void ComponentDepsNode::remove_operation(eDepsOperation_Code opcode, const strin
 
 void ComponentDepsNode::clear_operations()
 {
-	GHASH_FOREACH_BEGIN(OperationDepsNode *, op_node, operations)
-	{
-		OBJECT_GUARDED_DELETE(op_node, OperationDepsNode);
-	}
-	GHASH_FOREACH_END();
-	BLI_ghash_clear(operations, comp_node_hash_key_free, NULL);
+	BLI_ghash_clear(operations,
+	                comp_node_hash_key_free,
+	                comp_node_hash_value_free);
 }
 
 void ComponentDepsNode::tag_update(Depsgraph *graph)




More information about the Bf-blender-cvs mailing list