forked from pool/pulseaudio
81 lines
2.8 KiB
Diff
81 lines
2.8 KiB
Diff
|
From d52262367aea179674762344cced386b7d5522f1 Mon Sep 17 00:00:00 2001
|
||
|
From: Lennart Poettering <lennart@poettering.net>
|
||
|
Date: Mon, 8 Jun 2009 00:02:15 +0200
|
||
|
Subject: [PATCH] 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.
|
||
|
---
|
||
|
src/modules/alsa/alsa-sink.c | 2 +-
|
||
|
src/modules/alsa/alsa-source.c | 2 +-
|
||
|
src/pulsecore/sink.c | 6 +++++-
|
||
|
src/pulsecore/source.c | 6 +++++-
|
||
|
4 files changed, 12 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
|
||
|
index 360cb4d..a544b58 100644
|
||
|
--- a/src/modules/alsa/alsa-sink.c
|
||
|
+++ b/src/modules/alsa/alsa-sink.c
|
||
|
@@ -1146,7 +1146,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 19c6cfc..5d8e349 100644
|
||
|
--- a/src/modules/alsa/alsa-source.c
|
||
|
+++ b/src/modules/alsa/alsa-source.c
|
||
|
@@ -1105,7 +1105,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 30fa557..c99f9a8 100644
|
||
|
--- a/src/pulsecore/sink.c
|
||
|
+++ b/src/pulsecore/sink.c
|
||
|
@@ -1272,8 +1272,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 2190250..0baaed1 100644
|
||
|
--- a/src/pulsecore/source.c
|
||
|
+++ b/src/pulsecore/source.c
|
||
|
@@ -757,8 +757,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;
|
||
|
--
|
||
|
1.6.0.2
|
||
|
|