From 80ac1331b545d993aa7c205dc24f8b20a4d6d44e Mon Sep 17 00:00:00 2001 From: David Marcec Date: Mon, 17 Aug 2020 01:23:55 +1000 Subject: Preliminary effects --- src/audio_core/info_updater.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src/audio_core/info_updater.cpp') diff --git a/src/audio_core/info_updater.cpp b/src/audio_core/info_updater.cpp index 286aa0321..f53ce21a5 100644 --- a/src/audio_core/info_updater.cpp +++ b/src/audio_core/info_updater.cpp @@ -244,14 +244,15 @@ bool InfoUpdater::UpdateEffects(EffectContext& effect_context, bool is_active) { // Update effects for (std::size_t i = 0; i < effect_count; i++) { auto* info = effect_context.GetInfo(i); + if (effect_in[i].type != info->GetType()) { + info = effect_context.RetargetEffect(i, effect_in[i].type); + } + info->Update(effect_in[i]); - // TODO(ogniK): Update individual effects - if ((!is_active && info->GetUsage() != UsageStatus::New) || - info->GetUsage() == UsageStatus::Removed) { + if ((!is_active && info->GetUsage() != UsageState::Initialized) || + info->GetUsage() == UsageState::Stopped) { effect_out[i].status = UsageStatus::Removed; - } else if (info->GetUsage() == UsageStatus::New) { - effect_out[i].status = UsageStatus::New; } else { effect_out[i].status = UsageStatus::Used; } @@ -290,7 +291,8 @@ bool InfoUpdater::UpdateSplitterInfo(SplitterContext& splitter_context) { } ResultCode InfoUpdater::UpdateMixes(MixContext& mix_context, std::size_t mix_buffer_count, - SplitterContext& splitter_context) { + SplitterContext& splitter_context, + EffectContext& effect_context) { std::vector mix_in_params; if (!behavior_info.IsMixInParameterDirtyOnlyUpdateSupported()) { @@ -387,13 +389,13 @@ ResultCode InfoUpdater::UpdateMixes(MixContext& mix_context, std::size_t mix_buf auto& mix_info_params = mix_info.GetInParams(); if (mix_info_params.in_use != mix_in.in_use) { mix_info_params.in_use = mix_in.in_use; - // TODO(ogniK): Update effect processing order + mix_info.ResetEffectProcessingOrder(); should_sort = true; } if (mix_in.in_use) { should_sort |= mix_info.Update(mix_context.GetEdgeMatrix(), mix_in, behavior_info, - splitter_context); + splitter_context, effect_context); } } -- cgit v1.2.3