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/keyframing.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/keyframing.c')
-rw-r--r-- | source/blender/editors/animation/keyframing.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 1922b876d1e..513fd29ef9b 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -157,7 +157,7 @@ bAction *verify_adt_action(Main *bmain, ID *id, short add) DEG_relations_tag_update(bmain); } - DEG_id_tag_update(&adt->action->id, ID_RECALC_COPY_ON_WRITE); + DEG_id_tag_update(&adt->action->id, ID_RECALC_ANIMATION_NO_FLUSH); /* return the action */ return adt->action; @@ -1317,10 +1317,10 @@ short insert_keyframe( if (ret) { if (act != NULL) { - DEG_id_tag_update(&act->id, ID_RECALC_COPY_ON_WRITE); + DEG_id_tag_update(&act->id, ID_RECALC_ANIMATION_NO_FLUSH); } if (adt != NULL && adt->action != NULL && adt->action != act) { - DEG_id_tag_update(&adt->action->id, ID_RECALC_COPY_ON_WRITE); + DEG_id_tag_update(&adt->action->id, ID_RECALC_ANIMATION_NO_FLUSH); } } @@ -1371,11 +1371,11 @@ static void deg_tag_after_keyframe_delete(Main *bmain, ID *id, AnimData *adt) /* In the case last f-curve wes removed need to inform dependency graph * about relations update, since it needs to get rid of animation operation * for this datablock. */ - DEG_id_tag_update_ex(bmain, id, ID_RECALC_COPY_ON_WRITE); + DEG_id_tag_update_ex(bmain, id, ID_RECALC_ANIMATION_NO_FLUSH); DEG_relations_tag_update(bmain); } else { - DEG_id_tag_update_ex(bmain, &adt->action->id, ID_RECALC_COPY_ON_WRITE); + DEG_id_tag_update_ex(bmain, &adt->action->id, ID_RECALC_ANIMATION_NO_FLUSH); } } |