summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
Diffstat (limited to 'audio')
-rw-r--r--audio/mixer.c4
-rw-r--r--audio/mixer.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/audio/mixer.c b/audio/mixer.c
index d97391cf7e..b67e548a3c 100644
--- a/audio/mixer.c
+++ b/audio/mixer.c
@@ -130,6 +130,7 @@ void mixer_setvolume(mixer_t *mixer, float l, float r)
if (!mixer->ao || mixer->muted_using_volume)
return;
setvolume_internal(mixer, mixer->vol_l, mixer->vol_r);
+ mixer->user_set_volume = true;
}
void mixer_getbothvolume(mixer_t *mixer, float *b)
@@ -152,6 +153,7 @@ void mixer_setmute(struct mixer *mixer, bool mute)
}
mixer->muted = mute;
mixer->muted_by_us = mute;
+ mixer->user_set_mute = true;
}
}
@@ -264,6 +266,8 @@ void mixer_reinit(struct mixer *mixer, struct ao *ao)
mixer_setmute(mixer, true);
if (mixer->balance != 0)
mixer_setbalance(mixer, mixer->balance);
+ mixer->user_set_mute = false;
+ mixer->user_set_volume = false;
}
/* Called before uninitializing the audio output. The main purpose is to
diff --git a/audio/mixer.h b/audio/mixer.h
index 3de92e1e03..3160c20cfe 100644
--- a/audio/mixer.h
+++ b/audio/mixer.h
@@ -41,6 +41,8 @@ typedef struct mixer {
* and needs to be restored after the driver is reinitialized. */
const char *restore_volume;
float balance;
+ bool user_set_mute;
+ bool user_set_volume;
} mixer_t;
void mixer_reinit(struct mixer *mixer, struct ao *ao);