summaryrefslogtreecommitdiffstats
path: root/mixer.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixer.c')
-rw-r--r--mixer.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/mixer.c b/mixer.c
index d01cab8b71..425e0fcd37 100644
--- a/mixer.c
+++ b/mixer.c
@@ -32,10 +32,15 @@ static void checkvolume(struct mixer *mixer)
if (!mixer->ao)
return;
+ if (mixer->softvol == SOFTVOL_AUTO) {
+ mixer->softvol = mixer->ao->per_application_mixer
+ ? SOFTVOL_NO : SOFTVOL_YES;
+ }
+
ao_control_vol_t vol;
if (mixer->softvol || CONTROL_OK != ao_control(mixer->ao,
AOCONTROL_GET_VOLUME, &vol)) {
- mixer->softvol = true;
+ mixer->softvol = SOFTVOL_YES;
if (!mixer->afilter)
return;
float db_vals[AF_NCH];
@@ -266,6 +271,9 @@ void mixer_reinit(struct mixer *mixer, struct ao *ao)
*/
void mixer_uninit(struct mixer *mixer)
{
+ if (!mixer->ao)
+ return;
+
checkvolume(mixer);
if (mixer->muted_by_us) {
/* Current audio output API combines playing the remaining buffered