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:
authorRichard Antalik <richardantalik@gmail.com>2021-03-20 03:33:15 +0300
committerRichard Antalik <richardantalik@gmail.com>2021-03-20 03:40:53 +0300
commitc81dfa2426084ab9e580047f568e4066cac34f2d (patch)
tree796b2efd2988710f83e11edfa2d0c1a88a99f2ed
parent8b3f5f755edcd1868369441f50fce7af8b7416e8 (diff)
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
-rw-r--r--source/blender/sequencer/intern/effects.c5
1 files changed, 5 insertions, 0 deletions
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);
}