From c81dfa2426084ab9e580047f568e4066cac34f2d Mon Sep 17 00:00:00 2001 From: Richard Antalik Date: Sat, 20 Mar 2021 01:33:15 +0100 Subject: Fix T85824: Transition between adjustment regression When transition effect is placed between 2 adjustment layer strips, only first adjustment layer was rendered by effect. Limit timeline_frame range to adjustment strip frame range. This timeline configuration is technically invalid, because strips should overlap when using transition effect. This was never restricted and instead of producing no image, transition effect used first and last frame of source strip. Many users got used to this "feature" so I think it make sense to fix this case so it behaves like other strip types. Reviewed By: sergey Differential Revision: https://developer.blender.org/D10562 --- source/blender/sequencer/intern/effects.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source/blender') diff --git a/source/blender/sequencer/intern/effects.c b/source/blender/sequencer/intern/effects.c index 7b030d6408b..cdb7f5de627 100644 --- a/source/blender/sequencer/intern/effects.c +++ b/source/blender/sequencer/intern/effects.c @@ -3024,6 +3024,11 @@ static ImBuf *do_adjustment_impl(const SeqRenderData *context, Sequence *seq, fl seqbasep = SEQ_get_seqbase_by_seq(&ed->seqbase, seq); + /* Clamp timeline_frame to strip range so it behaves as if it had "still frame" offset (last + * frame is static after end of strip). This is how most strips behave. This way transition + * effects that doesn't overlap or speed effect can't fail rendering outside of strip range. */ + timeline_frame = clamp_i(timeline_frame, seq->startdisp, seq->enddisp - 1); + if (seq->machine > 1) { i = seq_render_give_ibuf_seqbase(context, timeline_frame, seq->machine - 1, seqbasep); } -- cgit v1.2.3