diff options
Diffstat (limited to 'source/blender/depsgraph/intern/node/deg_node_id.h')
-rw-r--r-- | source/blender/depsgraph/intern/node/deg_node_id.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/depsgraph/intern/node/deg_node_id.h b/source/blender/depsgraph/intern/node/deg_node_id.h index 04a9006ac10..c4d36685bb8 100644 --- a/source/blender/depsgraph/intern/node/deg_node_id.h +++ b/source/blender/depsgraph/intern/node/deg_node_id.h @@ -74,12 +74,22 @@ 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 Block referenced. */ ID *id_orig; + + /* Session-wide UUID of the id_orig. + * Is used on relations update to map evaluated state from old nodes to the new ones, without + * relying on pointers (which are not guaranteed to be unique) and without dereferencing id_orig + * which could be "stale" pointer. */ + uint id_orig_session_uuid; + + /* Evaluated datablock. + * Will be covered by the copy-on-write system if the ID Type needs it. */ ID *id_cow; /* Hash to make it faster to look up components. */ |