From 0bc7f584f44803cda2c0a3d36dbef127161663d6 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 12 Mar 2009 18:40:03 +0100 Subject: mixer_control: don't touch mixers of disabled outputs When an audio output device is disabled, also disable its mixer. --- src/mixer_control.c | 6 ++++++ src/output_command.c | 9 +++++++++ 2 files changed, 15 insertions(+) (limited to 'src') diff --git a/src/mixer_control.c b/src/mixer_control.c index a43230d5..f583696e 100644 --- a/src/mixer_control.c +++ b/src/mixer_control.c @@ -33,6 +33,9 @@ mixer_control_setvol(unsigned int device, int volume, int rel) assert(device < audio_output_count()); output = audio_output_get(device); + if (!output->enabled) + return false; + mixer = ao_plugin_get_mixer(output->plugin, output->data); if (mixer != NULL) { if (rel) { @@ -61,6 +64,9 @@ mixer_control_getvol(unsigned int device, int *volume) assert(device < audio_output_count()); output = audio_output_get(device); + if (!output->enabled) + return false; + mixer = ao_plugin_get_mixer(output->plugin, output->data); if (mixer != NULL) { int volume2; diff --git a/src/output_command.c b/src/output_command.c index 2e33ca8b..13cd62b8 100644 --- a/src/output_command.c +++ b/src/output_command.c @@ -26,6 +26,8 @@ #include "output_command.h" #include "output_all.h" #include "output_internal.h" +#include "output_plugin.h" +#include "mixer_api.h" #include "idle.h" bool @@ -48,6 +50,7 @@ bool audio_output_disable_index(unsigned idx) { struct audio_output *ao; + struct mixer *mixer; if (idx >= audio_output_count()) return false; @@ -57,5 +60,11 @@ audio_output_disable_index(unsigned idx) ao->enabled = false; idle_add(IDLE_OUTPUT); + mixer = ao_plugin_get_mixer(ao->plugin, ao->data); + if (mixer != NULL) { + mixer_close(mixer); + idle_add(IDLE_MIXER); + } + return true; } -- cgit v1.2.3