diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-03-13 17:38:45 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-03-13 17:51:44 +0300 |
commit | 0e9ea707b5e5be2a38dd29dded3dd6c25a5e1992 (patch) | |
tree | 6b68505ac06a9fbf5d6a5c6a1cea794d0326adcc /source/blender/editors/animation/anim_channels_defines.c | |
parent | bc5b0f7a091c3955263701be8c858fd56f8ba59f (diff) |
Fix T58721: Keyframing one transform option reset other transforms
Use dedicated flag to tag animation just for copy-on-write synchronization,
which makes it so copies of the original data blocks gets in sync with the
original ID. This will not flush the animation update to all objects which
depend on that animation.
If such flush is required, use ID_RECALC_ANIMATION.
Reviewers: brecht
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D4508
Diffstat (limited to 'source/blender/editors/animation/anim_channels_defines.c')
-rw-r--r-- | source/blender/editors/animation/anim_channels_defines.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index d1cef1cfa17..e3138dee1a7 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -4059,13 +4059,13 @@ static void achannel_setting_flush_widget_cb(bContext *C, void *ale_npoin, void WM_event_add_notifier(C, NC_GPENCIL | ND_DATA, NULL); } - /* tag copy-on-write flushing (so that the settings will have an effect) */ + /* Tag for full animation update, so that the settings will have an effect. */ if (ale_setting->id) { - DEG_id_tag_update(ale_setting->id, ID_RECALC_ANIMATION | ID_RECALC_COPY_ON_WRITE); + DEG_id_tag_update(ale_setting->id, ID_RECALC_ANIMATION); } if (ale_setting->adt && ale_setting->adt->action) { - /* action is it's own datablock, so has to be tagged specifically... */ - DEG_id_tag_update(&ale_setting->adt->action->id, ID_RECALC_COPY_ON_WRITE); + /* Action is it's own datablock, so has to be tagged specifically. */ + DEG_id_tag_update(&ale_setting->adt->action->id, ID_RECALC_ANIMATION); } /* verify animation context */ @@ -4109,7 +4109,7 @@ static void achannel_nlatrack_solo_widget_cb(bContext *C, void *ale_poin, void * BKE_nlatrack_solo_toggle(adt, nlt); /* send notifiers */ - DEG_id_tag_update(ale->id, ID_RECALC_ANIMATION | ID_RECALC_COPY_ON_WRITE); + DEG_id_tag_update(ale->id, ID_RECALC_ANIMATION); WM_event_add_notifier(C, NC_ANIMATION | ND_NLA | NA_EDITED, NULL); } |