From: Lennart Poettering Date: Sun, 7 Jun 2009 22:02:15 +0000 (+0200) Subject: core: make sure soft mute status stays in sync with hw mute status X-Git-Tag: submit/2.0-panda/20130828.192557~1734 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=587fc2ab1c7b53ddd28f35e19aad55caa804de1f;p=profile%2Fivi%2Fpulseaudio-panda.git core: make sure soft mute status stays in sync with hw mute status This should close rhbz #494851, mandriva bz #51234. Probably the same as our own #572, launchpad #352732. --- diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c index 98ebac3..59a5ca7 100644 --- a/src/modules/alsa/alsa-sink.c +++ b/src/modules/alsa/alsa-sink.c @@ -1199,7 +1199,7 @@ fail: static void sink_get_mute_cb(pa_sink *s) { struct userdata *u = s->userdata; - int err, sw; + int err, sw = 0; pa_assert(u); pa_assert(u->mixer_elem); diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c index 277b110..c176309 100644 --- a/src/modules/alsa/alsa-source.c +++ b/src/modules/alsa/alsa-source.c @@ -1158,7 +1158,7 @@ fail: static void source_get_mute_cb(pa_source *s) { struct userdata *u = s->userdata; - int err, sw; + int err, sw = 0; pa_assert(u); pa_assert(u->mixer_elem); diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c index db9b4f3..5d54d83 100644 --- a/src/pulsecore/sink.c +++ b/src/pulsecore/sink.c @@ -1365,8 +1365,12 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) { pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0); - if (old_muted != s->muted) + if (old_muted != s->muted) { pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); + + /* Make sure the soft mute status stays in sync */ + pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MUTE, NULL, 0, NULL) == 0); + } } return s->muted; diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index abb5f4d..53697c5 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -768,8 +768,12 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) { pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0); - if (old_muted != s->muted) + if (old_muted != s->muted) { pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); + + /* Make sure the soft mute status stays in sync */ + pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_MUTE, NULL, 0, NULL) == 0); + } } return s->muted;