summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--audio/mixer.c5
-rw-r--r--audio/mixer.h1
-rw-r--r--mpvcore/command.c6
3 files changed, 12 insertions, 0 deletions
diff --git a/audio/mixer.c b/audio/mixer.c
index 07ce229f73..f3e9d959aa 100644
--- a/audio/mixer.c
+++ b/audio/mixer.c
@@ -59,6 +59,11 @@ struct mixer *mixer_init(void *talloc_ctx, struct MPOpts *opts)
return mixer;
}
+bool mixer_audio_initialized(struct mixer *mixer)
+{
+ return !!mixer->ao;
+}
+
static void checkvolume(struct mixer *mixer)
{
if (!mixer->ao)
diff --git a/audio/mixer.h b/audio/mixer.h
index 9fbb4bcdca..e2e574c22e 100644
--- a/audio/mixer.h
+++ b/audio/mixer.h
@@ -36,6 +36,7 @@ struct mixer;
struct mixer *mixer_init(void *talloc_ctx, struct MPOpts *opts);
void mixer_reinit_audio(struct mixer *mixer, struct ao *ao, struct af_stream *af);
void mixer_uninit_audio(struct mixer *mixer);
+bool mixer_audio_initialized(struct mixer *mixer);
void mixer_getvolume(struct mixer *mixer, float *l, float *r);
void mixer_setvolume(struct mixer *mixer, float l, float r);
void mixer_incvolume(struct mixer *mixer);
diff --git a/mpvcore/command.c b/mpvcore/command.c
index f16d171bf4..c9eb21dd0b 100644
--- a/mpvcore/command.c
+++ b/mpvcore/command.c
@@ -768,9 +768,13 @@ static int mp_property_volume(m_option_t *prop, int action, void *arg,
mixer_getbothvolume(mpctx->mixer, arg);
return M_PROPERTY_OK;
case M_PROPERTY_SET:
+ if (!mixer_audio_initialized(mpctx->mixer))
+ return M_PROPERTY_ERROR;
mixer_setvolume(mpctx->mixer, *(float *) arg, *(float *) arg);
return M_PROPERTY_OK;
case M_PROPERTY_SWITCH: {
+ if (!mixer_audio_initialized(mpctx->mixer))
+ return M_PROPERTY_ERROR;
struct m_property_switch_arg *sarg = arg;
if (sarg->inc <= 0)
mixer_decvolume(mpctx->mixer);
@@ -788,6 +792,8 @@ static int mp_property_mute(m_option_t *prop, int action, void *arg,
{
switch (action) {
case M_PROPERTY_SET:
+ if (!mixer_audio_initialized(mpctx->mixer))
+ return M_PROPERTY_ERROR;
mixer_setmute(mpctx->mixer, *(int *) arg);
return M_PROPERTY_OK;
case M_PROPERTY_GET: