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-05-24 06:37:46 +0300
committerRichard Antalik <richardantalik@gmail.com>2021-05-24 06:57:53 +0300
commit43153e2324548102ff47eb3ce97db2b59ae26ef4 (patch)
tree6d41912e5ac7703433b6fea22219860562783747
parent7e841c797fb86f4d476f82d7c1cdd44263c542fd (diff)
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
-rw-r--r--source/blender/sequencer/intern/render.c18
1 files changed, 9 insertions, 9 deletions
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;