summaryrefslogtreecommitdiff
path: root/src/modules/alsa/alsa-source.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/alsa/alsa-source.c')
-rw-r--r--src/modules/alsa/alsa-source.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 425f4f0f8..c0759c652 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1277,18 +1277,17 @@ static void source_write_volume_cb(pa_source *s) {
}
}
-static void source_get_mute_cb(pa_source *s) {
+static int source_get_mute_cb(pa_source *s, bool *mute) {
struct userdata *u = s->userdata;
- bool b;
pa_assert(u);
pa_assert(u->mixer_path);
pa_assert(u->mixer_handle);
- if (pa_alsa_path_get_mute(u->mixer_path, u->mixer_handle, &b) < 0)
- return;
+ if (pa_alsa_path_get_mute(u->mixer_path, u->mixer_handle, mute) < 0)
+ return -1;
- s->muted = b;
+ return 0;
}
static void source_set_mute_cb(pa_source *s) {
@@ -2088,8 +2087,12 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
if (u->source->set_mute)
u->source->set_mute(u->source);
} else {
- if (u->source->get_mute)
- u->source->get_mute(u->source);
+ if (u->source->get_mute) {
+ bool mute;
+
+ if (u->source->get_mute(u->source, &mute) >= 0)
+ pa_source_set_mute(u->source, mute, false);
+ }
}
if ((data.volume_is_set || data.muted_is_set) && u->source->write_volume)