diff options
author | Sergey Sharybin <sergey@blender.org> | 2022-01-31 19:37:07 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2022-02-01 13:04:19 +0300 |
commit | 6f9828289f397228c6cab6f352fb4a84a65da22a (patch) | |
tree | 9556ca554426125ba58e1b314cfbf409914e9a97 /source/blender/depsgraph/intern/eval | |
parent | 396413dedf079478418771da159bb2c97bb0e4e9 (diff) |
Fix T95356: Crash in armature edit mode and certain condition
Blender would have crashed when renaming bone in Edit Mode, Saving, and
than selecting/deselecting.
Caused by a mistake in the 0f89bcdbebf5: can not "short-circuit" the
CoW update if it was explicitly requested.
Safest for now solution seems to be to store whether the CoW component
has been explicitly tagged, so that the following configuration can be
supported:
DEG_id_tag_update(id, ID_RECALC_GEOMETRY);
DEG_id_tag_update(id, ID_RECALC_COPY_ON_WRITE);
Differential Revision: https://developer.blender.org/D13966
Diffstat (limited to 'source/blender/depsgraph/intern/eval')
-rw-r--r-- | source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc index 851d0bcf000..8a3c5c5b776 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc @@ -904,7 +904,7 @@ ID *deg_update_copy_on_write_datablock(const Depsgraph *depsgraph, const IDNode * modifiers. * * TODO: Investigate modes besides edit-mode. */ - if (check_datablock_expanded(id_cow)) { + if (check_datablock_expanded(id_cow) && !id_node->is_cow_explicitly_tagged) { const ID_Type id_type = GS(id_orig->name); if (OB_DATA_SUPPORT_EDITMODE(id_type) && BKE_object_data_is_in_editmode(id_orig)) { /* Make sure pointers in the edit mode data are updated in the copy. |