diff options
Diffstat (limited to 'source/blender/depsgraph/intern/node')
-rw-r--r-- | source/blender/depsgraph/intern/node/deg_node_id.cc | 1 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/node/deg_node_id.h | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/depsgraph/intern/node/deg_node_id.cc b/source/blender/depsgraph/intern/node/deg_node_id.cc index 0fbf658ceb3..cd25cc14069 100644 --- a/source/blender/depsgraph/intern/node/deg_node_id.cc +++ b/source/blender/depsgraph/intern/node/deg_node_id.cc @@ -103,6 +103,7 @@ void IDNode::init(const ID *id, const char *UNUSED(subdata)) { BLI_assert(id != nullptr); /* Store ID-pointer. */ + id_type = GS(id->name); id_orig = (ID *)id; eval_flags = 0; previous_eval_flags = 0; diff --git a/source/blender/depsgraph/intern/node/deg_node_id.h b/source/blender/depsgraph/intern/node/deg_node_id.h index 886c25b5a4e..6eea31ebff9 100644 --- a/source/blender/depsgraph/intern/node/deg_node_id.h +++ b/source/blender/depsgraph/intern/node/deg_node_id.h @@ -25,6 +25,7 @@ #include "intern/node/deg_node.h" #include "BLI_sys_types.h" +#include "DNA_ID.h" struct GHash; @@ -73,6 +74,10 @@ struct IDNode : public Node { IDComponentsMask get_visible_components_mask() const; /* ID Block referenced. */ + /* Type of the ID stored separately, so it's possible to perform check whether CoW is needed + * without de-referencing the id_cow (which is not safe when ID is NOT covered by CoW and has + * been deleted from the main database.) */ + ID_Type id_type; ID *id_orig; ID *id_cow; |