diff options
author | Richard Antalik <richardantalik@gmail.com> | 2021-10-07 01:10:37 +0300 |
---|---|---|
committer | Richard Antalik <richardantalik@gmail.com> | 2021-10-07 01:10:37 +0300 |
commit | 877ba6b251bb5af673d023b243fd6da03e4a0fab (patch) | |
tree | cc33ddc9c3fcc8d0b31c5753f9a8ee221b396152 /source/blender/editors/transform/transform_convert_sequencer.c | |
parent | 306e9bff46ad721c1d3203bf7d83c1bef0d957f3 (diff) |
Fix T91972: Meta changes length when adding strip
`SequencesMeta.new_movie()` API function caused meta strip to change
length. Similar issue has been fixed in transform code by checking
if `MetaStack` exists. `MetaStack` is not used when changing data in
python.
Provide `seqbase` to `SEQ_time_update_sequence()` so the function can
check if change happens inside of meta strip.
This patch also merges `seq_time_update_sequence_bounds()` into
`SEQ_time_update_sequence()`. This is because same issue applies for
both functions and it is confusing to have more time update
functions.re if this will lead anywhere.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D12763
Diffstat (limited to 'source/blender/editors/transform/transform_convert_sequencer.c')
-rw-r--r-- | source/blender/editors/transform/transform_convert_sequencer.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/source/blender/editors/transform/transform_convert_sequencer.c b/source/blender/editors/transform/transform_convert_sequencer.c index a2698b342d0..bf320595d6c 100644 --- a/source/blender/editors/transform/transform_convert_sequencer.c +++ b/source/blender/editors/transform/transform_convert_sequencer.c @@ -275,7 +275,7 @@ static void seq_transform_cancel(TransInfo *t, SeqCollection *transformed_strips SEQ_transform_seqbase_shuffle(seqbase, seq, t->scene); } - SEQ_time_update_sequence_bounds(t->scene, seq); + SEQ_time_update_sequence(t->scene, seqbase, seq); } } @@ -327,7 +327,8 @@ static void seq_transform_update_effects(TransInfo *t, SeqCollection *collection Sequence *seq; SEQ_ITERATOR_FOREACH (seq, collection) { if ((seq->type & SEQ_TYPE_EFFECT) && (seq->seq1 || seq->seq2 || seq->seq3)) { - SEQ_time_update_sequence(t->scene, seq); + ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(t->scene)); + SEQ_time_update_sequence(t->scene, seqbase, seq); } } } @@ -487,7 +488,9 @@ static void seq_transform_handle_overwrite_trim(const TransInfo *t, BLI_assert(overlap == STRIP_OVERLAP_RIGHT_SIDE); SEQ_transform_set_right_handle_frame(seq, transformed->startdisp); } - SEQ_time_update_sequence(t->scene, seq); + + ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(t->scene)); + SEQ_time_update_sequence(t->scene, seqbase, seq); } SEQ_collection_free(targets); } @@ -704,7 +707,9 @@ BLI_INLINE void trans_update_seq(Scene *sce, Sequence *seq, int old_start, int s /* Calculate this strip and all nested strips. * Children are ALWAYS transformed first so we don't need to do this in another loop. */ - SEQ_time_update_sequence(sce, seq); + + ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(sce)); + SEQ_time_update_sequence(sce, seqbase, seq); if (sel_flag == SELECT) { SEQ_offset_animdata(sce, seq, seq->start - old_start); @@ -744,13 +749,13 @@ static void flushTransSeq(TransInfo *t) SEQ_transform_set_left_handle_frame(seq, new_frame); SEQ_transform_handle_xlimits(seq, tdsq->flag & SEQ_LEFTSEL, tdsq->flag & SEQ_RIGHTSEL); SEQ_transform_fix_single_image_seq_offsets(seq); - SEQ_time_update_sequence(t->scene, seq); + SEQ_time_update_sequence(t->scene, seqbasep, seq); break; case SEQ_RIGHTSEL: /* No vertical transform. */ SEQ_transform_set_right_handle_frame(seq, new_frame); SEQ_transform_handle_xlimits(seq, tdsq->flag & SEQ_LEFTSEL, tdsq->flag & SEQ_RIGHTSEL); SEQ_transform_fix_single_image_seq_offsets(seq); - SEQ_time_update_sequence(t->scene, seq); + SEQ_time_update_sequence(t->scene, seqbasep, seq); break; } } @@ -759,7 +764,7 @@ static void flushTransSeq(TransInfo *t) if (ELEM(t->mode, TFM_SEQ_SLIDE, TFM_TIME_TRANSLATE)) { for (seq = seqbasep->first; seq; seq = seq->next) { if (seq->seq1 || seq->seq2 || seq->seq3) { - SEQ_time_update_sequence(t->scene, seq); + SEQ_time_update_sequence(t->scene, seqbasep, seq); } } } |