diff --git a/mixer.c b/mixer.c index 8b52145d62..425e0fcd37 100644 --- a/mixer.c +++ b/mixer.c @@ -271,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 diff --git a/mplayer.c b/mplayer.c index b62cb524ee..65c9731c53 100644 --- a/mplayer.c +++ b/mplayer.c @@ -692,10 +692,10 @@ void uninit_player(struct MPContext *mpctx, unsigned int mask) if (mask & INITIALIZED_AO) { mpctx->initialized_flags &= ~INITIALIZED_AO; - if (mpctx->ao) { + if (mpctx->mixer.ao) mixer_uninit(&mpctx->mixer); + if (mpctx->ao) ao_uninit(mpctx->ao, mpctx->stop_play != AT_END_OF_FILE); - } mpctx->ao = NULL; mpctx->mixer.ao = NULL; }