From 2ec3aa4311bf6dcf887f9541c7e811acb8f05e3d Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Tue, 28 Dec 2021 14:36:01 +0900 Subject: [PATCH] stream-manager: Deactivate ducking for audio HAL when stream ducking is removed Previously, deactivation ducking for audio HAL could be missed. [Version] 13.0.81 [Issue Type] Bug fix Change-Id: Ide1206dc98f1dd354cb23e6c8cf06361a1d815e3 Signed-off-by: Jeongmo Yang --- packaging/pulseaudio-modules-tizen.spec | 2 +- src/stream-manager.c | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packaging/pulseaudio-modules-tizen.spec b/packaging/pulseaudio-modules-tizen.spec index 8520637..57aea54 100644 --- a/packaging/pulseaudio-modules-tizen.spec +++ b/packaging/pulseaudio-modules-tizen.spec @@ -1,6 +1,6 @@ Name: pulseaudio-modules-tizen Summary: Pulseaudio modules for Tizen -Version: 13.0.80 +Version: 13.0.81 Release: 0 Group: Multimedia/Audio License: LGPL-2.1+ diff --git a/src/stream-manager.c b/src/stream-manager.c index 4b8b1a1..e50e13b 100644 --- a/src/stream-manager.c +++ b/src/stream-manager.c @@ -3673,11 +3673,16 @@ static void subscribe_cb(pa_core *core, pa_subscription_event_type_t t, uint32_t if (sd) { uint32_t ducking_idx = 0; pa_sink_input *stream = NULL; + hal_ducking_activation_info ducking_activation_info = { + sd->target_role, sd->duration, sd->ratio, false + }; - pa_log_info(" - remove sd(%p), trigger_index(%u)", sd, idx); + pa_log_info(" - remove sd(%p) state(%d), trigger_index(%u)", sd, sd->state, idx); + + if (sd->state == STREAM_DUCKING_STATE_UNDUCKED || sd->state == STREAM_DUCKING_STATE_UNDUCKING) + goto skip_unducking; PA_IDXSET_FOREACH(stream, sd->idx_ducking_streams, ducking_idx) { - hal_ducking_activation_info ducking_activation_info; /* Note: It is added temporarily to find missing index of idx_ducking_streams */ if (!pa_idxset_get_by_data(m->core->sink_inputs, stream, NULL)) { pa_log_error("could not find stream(%p), skip it", stream); @@ -3687,16 +3692,11 @@ static void subscribe_cb(pa_core *core, pa_subscription_event_type_t t, uint32_t pa_log_info(" -- remove volume ramp, key(%s) from remained stream(idx:%u)", sd->vol_key, stream->index); pa_sink_input_remove_volume_factor(stream, sd->vol_key); pa_sink_input_remove_volume_ramp_factor(stream, sd->vol_key, true); - - /* notify ducking activation */ - ducking_activation_info.target_role = sd->target_role; - ducking_activation_info.duration = sd->duration; - ducking_activation_info.ratio = sd->ratio; - ducking_activation_info.is_activated = false; - - pa_hal_interface_notify_ducking_activation_changed(m->hal, &ducking_activation_info); } + pa_hal_interface_notify_ducking_activation_changed(m->hal, &ducking_activation_info); + + skip_unducking: pa_idxset_free(sd->idx_ducking_streams, NULL); pa_hashmap_remove(m->stream_duckings, PA_UINT_TO_PTR(idx)); pa_xfree(sd); -- 2.34.1