Commit 0bc7f584 authored by Max Kellermann's avatar Max Kellermann

mixer_control: don't touch mixers of disabled outputs

When an audio output device is disabled, also disable its mixer.
parent c37567a1
......@@ -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;
......
......@@ -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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment