[Bf-blender-cvs] [43153e23245] master: Fix T88466: Sound strips prevent strip rendering

Richard Antalik noreply at git.blender.org
Mon May 24 05:58:49 CEST 2021


Commit: 43153e2324548102ff47eb3ce97db2b59ae26ef4
Author: Richard Antalik
Date:   Mon May 24 05:37:46 2021 +0200
Branches: master
https://developer.blender.org/rB43153e2324548102ff47eb3ce97db2b59ae26ef4

Fix T88466: Sound strips prevent strip rendering

When sound strip is above another strip such as movie strip, it prevents
from rendering movie strip.

This bug was introduced in 0b7744f4da66. Function `must_render_strip()`
checks if there is any strip with `SEQ_BLEND_REPLACE` blending and
considers this strip as lowest strip in stack. Sound strips do have this
blend mode set, which caused the bug.

Remove all sound strips and muted strips from stack collection before
checking with `must_render_strip()` function

===================================================================

M	source/blender/sequencer/intern/render.c

===================================================================

diff --git a/source/blender/sequencer/intern/render.c b/source/blender/sequencer/intern/render.c
index f3cea273fdf..d881c90a1e0 100644
--- a/source/blender/sequencer/intern/render.c
+++ b/source/blender/sequencer/intern/render.c
@@ -273,15 +273,6 @@ static bool seq_is_effect_of(const Sequence *seq_effect, const Sequence *possibl
  * Order of applying these conditions is important. */
 static bool must_render_strip(const Sequence *seq, SeqCollection *strips_under_playhead)
 {
-  /* Sound strips are not rendered. */
-  if (seq->type == SEQ_TYPE_SOUND_RAM) {
-    return false;
-  }
-  /* Muted strips are not rendered. */
-  if ((seq->flag & SEQ_MUTE) != 0) {
-    return false;
-  }
-
   bool seq_have_effect_in_stack = false;
   Sequence *seq_iter;
   SEQ_ITERATOR_FOREACH (seq_iter, strips_under_playhead) {
@@ -340,6 +331,15 @@ static void collection_filter_channel_up_to_incl(SeqCollection *collection, cons
 static void collection_filter_rendered_strips(SeqCollection *collection)
 {
   Sequence *seq;
+
+  /* Remove sound strips and muted strips from collection, because these are not rendered.
+   * Function must_render_strip() don't have to check for these strips anymore. */
+  SEQ_ITERATOR_FOREACH (seq, collection) {
+    if (seq->type == SEQ_TYPE_SOUND_RAM || (seq->flag & SEQ_MUTE) != 0) {
+      SEQ_collection_remove_strip(seq, collection);
+    }
+  }
+
   SEQ_ITERATOR_FOREACH (seq, collection) {
     if (must_render_strip(seq, collection)) {
       continue;



More information about the Bf-blender-cvs mailing list