summaryrefslogtreecommitdiff
path: root/src/audio_core/info_updater.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio_core/info_updater.cpp')
-rw-r--r--src/audio_core/info_updater.cpp18
1 files changed, 10 insertions, 8 deletions
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) {
244 // Update effects 244 // Update effects
245 for (std::size_t i = 0; i < effect_count; i++) { 245 for (std::size_t i = 0; i < effect_count; i++) {
246 auto* info = effect_context.GetInfo(i); 246 auto* info = effect_context.GetInfo(i);
247 if (effect_in[i].type != info->GetType()) {
248 info = effect_context.RetargetEffect(i, effect_in[i].type);
249 }
250
247 info->Update(effect_in[i]); 251 info->Update(effect_in[i]);
248 252
249 // TODO(ogniK): Update individual effects 253 if ((!is_active && info->GetUsage() != UsageState::Initialized) ||
250 if ((!is_active && info->GetUsage() != UsageStatus::New) || 254 info->GetUsage() == UsageState::Stopped) {
251 info->GetUsage() == UsageStatus::Removed) {
252 effect_out[i].status = UsageStatus::Removed; 255 effect_out[i].status = UsageStatus::Removed;
253 } else if (info->GetUsage() == UsageStatus::New) {
254 effect_out[i].status = UsageStatus::New;
255 } else { 256 } else {
256 effect_out[i].status = UsageStatus::Used; 257 effect_out[i].status = UsageStatus::Used;
257 } 258 }
@@ -290,7 +291,8 @@ bool InfoUpdater::UpdateSplitterInfo(SplitterContext& splitter_context) {
290} 291}
291 292
292ResultCode InfoUpdater::UpdateMixes(MixContext& mix_context, std::size_t mix_buffer_count, 293ResultCode InfoUpdater::UpdateMixes(MixContext& mix_context, std::size_t mix_buffer_count,
293 SplitterContext& splitter_context) { 294 SplitterContext& splitter_context,
295 EffectContext& effect_context) {
294 std::vector<MixInfo::InParams> mix_in_params; 296 std::vector<MixInfo::InParams> mix_in_params;
295 297
296 if (!behavior_info.IsMixInParameterDirtyOnlyUpdateSupported()) { 298 if (!behavior_info.IsMixInParameterDirtyOnlyUpdateSupported()) {
@@ -387,13 +389,13 @@ ResultCode InfoUpdater::UpdateMixes(MixContext& mix_context, std::size_t mix_buf
387 auto& mix_info_params = mix_info.GetInParams(); 389 auto& mix_info_params = mix_info.GetInParams();
388 if (mix_info_params.in_use != mix_in.in_use) { 390 if (mix_info_params.in_use != mix_in.in_use) {
389 mix_info_params.in_use = mix_in.in_use; 391 mix_info_params.in_use = mix_in.in_use;
390 // TODO(ogniK): Update effect processing order 392 mix_info.ResetEffectProcessingOrder();
391 should_sort = true; 393 should_sort = true;
392 } 394 }
393 395
394 if (mix_in.in_use) { 396 if (mix_in.in_use) {
395 should_sort |= mix_info.Update(mix_context.GetEdgeMatrix(), mix_in, behavior_info, 397 should_sort |= mix_info.Update(mix_context.GetEdgeMatrix(), mix_in, behavior_info,
396 splitter_context); 398 splitter_context, effect_context);
397 } 399 }
398 } 400 }
399 401