Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2020-03-03 07:48:00 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-03-03 07:50:11 +0300
commit8447f45f09761c5f75b1ac76b7ad99c901680052 (patch)
treee86829cf6d6e5b94b2e06346bed0dcdffa2a7fe2 /source/blender/editors/animation/anim_deps.c
parent7a875922e7cce20de1c2475534666fdcd664b6a0 (diff)
Fix T74292: Dope sheet (Mask mode) keyframe editing misses update
Diffstat (limited to 'source/blender/editors/animation/anim_deps.c')
-rw-r--r--source/blender/editors/animation/anim_deps.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c
index 5c9f0707aa9..0a93351fefd 100644
--- a/source/blender/editors/animation/anim_deps.c
+++ b/source/blender/editors/animation/anim_deps.c
@@ -30,6 +30,7 @@
#include "DNA_gpencil_types.h"
#include "DNA_object_types.h"
#include "DNA_node_types.h"
+#include "DNA_mask_types.h"
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
@@ -360,16 +361,6 @@ void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
{
bAnimListElem *ale;
- if (ELEM(ac->datatype, ANIMCONT_MASK)) {
-#ifdef DEBUG
- /* quiet assert */
- for (ale = anim_data->first; ale; ale = ale->next) {
- ale->update = 0;
- }
-#endif
- return;
- }
-
for (ale = anim_data->first; ale; ale = ale->next) {
if (ale->type == ANIMTYPE_GPLAYER) {
bGPDlayer *gpl = ale->data;
@@ -377,6 +368,8 @@ void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
if (ale->update & ANIM_UPDATE_ORDER) {
ale->update &= ~ANIM_UPDATE_ORDER;
if (gpl) {
+ /* While correct & we could enable it: 'posttrans_gpd_clean'
+ * currently handles as well as removing doubles. */
// gpencil_sort_frames(gpl);
}
}
@@ -390,6 +383,27 @@ void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
ale->update &= ~ANIM_UPDATE_HANDLES;
}
}
+ else if (ale->datatype == ALE_MASKLAY) {
+ MaskLayer *masklay = ale->data;
+
+ if (ale->update & ANIM_UPDATE_ORDER) {
+ ale->update &= ~ANIM_UPDATE_ORDER;
+ if (masklay) {
+ /* While correct & we could enable it: 'posttrans_mask_clean'
+ * currently handles as well as removing doubles. */
+ // BKE_mask_layer_shape_sort(masklay);
+ }
+ }
+
+ if (ale->update & ANIM_UPDATE_DEPS) {
+ ale->update &= ~ANIM_UPDATE_DEPS;
+ ANIM_list_elem_update(ac->bmain, ac->scene, ale);
+ }
+ /* Disable handles to avoid assert. */
+ if (ale->update & ANIM_UPDATE_HANDLES) {
+ ale->update &= ~ANIM_UPDATE_HANDLES;
+ }
+ }
else if (ale->datatype == ALE_FCURVE) {
FCurve *fcu = ale->key_data;