[Bf-blender-cvs] [133966423aa] blender-v2.92-release: Revert "Depsgraph: Remove redundant copy-on-write operations"

Brecht Van Lommel noreply at git.blender.org
Thu Jan 28 13:16:56 CET 2021


Commit: 133966423aa61f614541ef910c34aea3d2275057
Author: Brecht Van Lommel
Date:   Thu Jan 28 13:14:29 2021 +0100
Branches: blender-v2.92-release
https://developer.blender.org/rB133966423aa61f614541ef910c34aea3d2275057

Revert "Depsgraph: Remove redundant copy-on-write operations"

This reverts commit 76fd41e9db19dd2a33fae0e690f76792b13d49ed. This should have
been reverted along with 0f95f51361d73fbd8ba8d80b3b65da930dcf3b20, since this
change by itself is causing crashes when the depsgraph accesses a non-existent
copy-on-write component.

Ref T84717

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

M	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M	source/blender/depsgraph/intern/builder/deg_builder_relations.cc

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

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index a109c5d8d88..dcdf2f48607 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -155,7 +155,6 @@ IDNode *DepsgraphNodeBuilder::add_id_node(ID *id)
 {
   BLI_assert(id->session_uuid != MAIN_ID_SESSION_UUID_UNSET);
 
-  const ID_Type id_type = GS(id->name);
   IDNode *id_node = nullptr;
   ID *id_cow = nullptr;
   IDComponentsMask previously_visible_components_mask = 0;
@@ -174,8 +173,10 @@ IDNode *DepsgraphNodeBuilder::add_id_node(ID *id)
   id_node->previously_visible_components_mask = previously_visible_components_mask;
   id_node->previous_eval_flags = previous_eval_flags;
   id_node->previous_customdata_masks = previous_customdata_masks;
-  /* NOTE: Zero number of components indicates that ID node was just created. */
-  if (id_node->components.is_empty() && deg_copy_on_write_is_needed(id_type)) {
+  /* Currently all ID nodes are supposed to have copy-on-write logic.
+   *
+   * NOTE: Zero number of components indicates that ID node was just created. */
+  if (id_node->components.is_empty()) {
     ComponentNode *comp_cow = id_node->add_component(NodeType::COPY_ON_WRITE);
     OperationNode *op_cow = comp_cow->add_operation(
         function_bind(deg_evaluate_copy_on_write, _1, id_node),
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 5f591b4aee0..fcaa3854d37 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -2788,13 +2788,7 @@ void DepsgraphRelationBuilder::build_nested_shapekey(ID *owner, Key *key)
 void DepsgraphRelationBuilder::build_copy_on_write_relations(IDNode *id_node)
 {
   ID *id_orig = id_node->id_orig;
-
   const ID_Type id_type = GS(id_orig->name);
-
-  if (!deg_copy_on_write_is_needed(id_type)) {
-    return;
-  }
-
   TimeSourceKey time_source_key;
   OperationKey copy_on_write_key(id_orig, NodeType::COPY_ON_WRITE, OperationCode::COPY_ON_WRITE);
   /* XXX: This is a quick hack to make Alt-A to work. */



More information about the Bf-blender-cvs mailing list