[Bf-blender-cvs] [cd3a19f20ce] master: Fix inconsistent node name handling in dependency graph

Sergey Sharybin noreply at git.blender.org
Wed Sep 21 16:48:57 CEST 2022


Commit: cd3a19f20ce938ce1e68ee85b3169fdc28d8b72e
Author: Sergey Sharybin
Date:   Fri Sep 16 16:42:51 2022 +0200
Branches: master
https://developer.blender.org/rBcd3a19f20ce938ce1e68ee85b3169fdc28d8b72e

Fix inconsistent node name handling in dependency graph

The ID nodes will use the provided component name to maintain
the map-based storage, while the component node itself could
override the empty name with a type name.

This lead to situations when it is not possible to lookup
the operation from its owner parameters.

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

M	source/blender/depsgraph/intern/node/deg_node_component.cc
M	source/blender/depsgraph/intern/node/deg_node_factory_impl.h

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

diff --git a/source/blender/depsgraph/intern/node/deg_node_component.cc b/source/blender/depsgraph/intern/node/deg_node_component.cc
index 40b4b36a29c..ebb4450579f 100644
--- a/source/blender/depsgraph/intern/node/deg_node_component.cc
+++ b/source/blender/depsgraph/intern/node/deg_node_component.cc
@@ -90,10 +90,11 @@ ComponentNode::~ComponentNode()
 
 string ComponentNode::identifier() const
 {
-  const string idname = this->owner->name;
-  const string typebuf = "" + to_string(static_cast<int>(type)) + ")";
-  return typebuf + name + " : " + idname +
-         "( affects_visible_id: " + (affects_visible_id ? "true" : "false") + ")";
+  const string type_name = type_get_factory(type)->type_name();
+  const string name_part = name[0] ? (string(" '") + name + "'") : "";
+
+  return "[" + type_name + "]" + name_part + " : " +
+         "(affects_visible_id: " + (affects_visible_id ? "true" : "false") + ")";
 }
 
 OperationNode *ComponentNode::find_operation(OperationIDKey key) const
diff --git a/source/blender/depsgraph/intern/node/deg_node_factory_impl.h b/source/blender/depsgraph/intern/node/deg_node_factory_impl.h
index d9d0a1c1e3e..5059368120e 100644
--- a/source/blender/depsgraph/intern/node/deg_node_factory_impl.h
+++ b/source/blender/depsgraph/intern/node/deg_node_factory_impl.h
@@ -34,15 +34,8 @@ Node *DepsNodeFactoryImpl<ModeObjectType>::create_node(const ID *id,
                                                        const char *name) const
 {
   Node *node = new ModeObjectType();
-  /* Populate base node settings. */
   node->type = type();
-  /* Set name if provided, or use default type name. */
-  if (name[0] != '\0') {
-    node->name = name;
-  }
-  else {
-    node->name = type_name();
-  }
+  node->name = name;
   node->init(id, subdata);
   return node;
 }



More information about the Bf-blender-cvs mailing list