[pulseaudio-discuss] [PATCH] stream-interaction: Don't reset interaction state when ducking

Juho Hämäläinen jusa at hilvi.org
Mon Jul 2 12:22:01 UTC 2018


If the interaction state would be reset when ducking, it could happen
that we apply volume factor to a sink-input that already has volume
factor applied by us. For example when volume factor is applied while
a sink-input is running and the sink-input is moved to another sink,
there will be assertion failure from pa_sink_input_add_volume_factor()
when calling pa_hashmap_put().

Signed-off-by: Juho Hämäläinen <jusa at hilvi.org>
---
 src/modules/stream-interaction.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/modules/stream-interaction.c b/src/modules/stream-interaction.c
index 4184786..88cbd5d 100644
--- a/src/modules/stream-interaction.c
+++ b/src/modules/stream-interaction.c
@@ -243,7 +243,10 @@ static pa_hook_result_t process(struct userdata *u, pa_sink_input *i, bool creat
     pa_assert(u);
     pa_sink_input_assert_ref(i);
 
-    if (!create)
+    /* Reset interaction states only for cork/mute. If we would reset interaction state
+     * for ducking, we could apply volume factor to sink-input that already has volume
+     * factor applied by us. */
+    if (!u->duck && !create)
         for (j = 0; j < u->n_groups; j++)
             pa_hashmap_remove(u->groups[j]->interaction_state, i);
 
-- 
2.7.4



More information about the pulseaudio-discuss mailing list