Merge branch 'blender-v4.3-release'
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "DNA_anim_types.h"
|
||||
#include "DNA_listBase.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_sequence_types.h"
|
||||
#include "DNA_sound_types.h"
|
||||
@@ -1017,7 +1018,22 @@ static void seq_update_sound_strips(Scene *scene, Sequence *seq)
|
||||
seq_update_sound_modifiers(seq);
|
||||
}
|
||||
|
||||
static void seq_update_scene_strip_sound(Sequence *seq)
|
||||
static bool scene_sequencer_is_used(const Scene *scene, ListBase *seqbase)
|
||||
{
|
||||
bool sequencer_is_used = false;
|
||||
LISTBASE_FOREACH (Sequence *, seq_iter, seqbase) {
|
||||
if (seq_iter->scene == scene && (seq_iter->flag & SEQ_SCENE_STRIPS) != 0) {
|
||||
sequencer_is_used = true;
|
||||
}
|
||||
if (seq_iter->type == SEQ_TYPE_META) {
|
||||
sequencer_is_used |= scene_sequencer_is_used(scene, &seq_iter->seqbase);
|
||||
}
|
||||
}
|
||||
|
||||
return sequencer_is_used;
|
||||
}
|
||||
|
||||
static void seq_update_scene_strip_sound(const Scene *scene, Sequence *seq)
|
||||
{
|
||||
if (seq->type != SEQ_TYPE_SCENE || seq->scene == nullptr) {
|
||||
return;
|
||||
@@ -1031,10 +1047,10 @@ static void seq_update_scene_strip_sound(Sequence *seq)
|
||||
* then it is no longer needed to do such manual forced updates. */
|
||||
BKE_sound_set_scene_volume(seq->scene, seq->scene->audio.volume);
|
||||
|
||||
/* Mute nested strips of scene when not using sequencer as input. */
|
||||
if ((seq->flag & SEQ_SCENE_STRIPS) == 0 && seq->scene->sound_scene != nullptr &&
|
||||
seq->scene->ed != nullptr)
|
||||
{
|
||||
/* Mute sound when all scene strips using particular scene are not rendering sequencer strips. */
|
||||
bool sequencer_is_used = scene_sequencer_is_used(seq->scene, &scene->ed->seqbase);
|
||||
|
||||
if (!sequencer_is_used && seq->scene->sound_scene != nullptr && seq->scene->ed != nullptr) {
|
||||
SEQ_for_each_callback(&seq->scene->ed->seqbase, seq_mute_sound_strips_cb, seq->scene);
|
||||
}
|
||||
}
|
||||
@@ -1050,7 +1066,7 @@ static bool seq_sound_update_cb(Sequence *seq, void *user_data)
|
||||
}
|
||||
|
||||
seq_update_sound_strips(scene, seq);
|
||||
seq_update_scene_strip_sound(seq);
|
||||
seq_update_scene_strip_sound(scene, seq);
|
||||
seq_update_sound_properties(scene, seq);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user