From a9ece6371f7b19b3d42cd41da043e8ac575cd898 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 12 Nov 2014 17:37:03 +0100 Subject: player: simplify audio uninit on segment switches The purpose of temporarily setting stop_play was to make the audio uninit code to explicitly drain audio if needed. This was the only way to do it before ao_drain() was made a separate function; now we can just do it explicitly instead. --- player/loadfile.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/player/loadfile.c b/player/loadfile.c index 2cdcc599c1..6e556a672d 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -252,17 +252,16 @@ bool timeline_set_part(struct MPContext *mpctx, int i, bool force) mpctx->video_offset = n->start - n->source_start; if (n->source == p->source && !force) return false; - enum stop_play_reason orig_stop_play = mpctx->stop_play; - if (!mpctx->d_video && mpctx->stop_play == KEEP_PLAYING) - mpctx->stop_play = AT_END_OF_FILE; // let audio uninit drain data + uninit_audio_chain(mpctx); uninit_video_chain(mpctx); uninit_sub_all(mpctx); if (!mpctx->opts->fixed_vo) uninit_video_out(mpctx); - if (!mpctx->opts->gapless_audio) + if (mpctx->ao && !mpctx->opts->gapless_audio) { + ao_drain(mpctx->ao); uninit_audio_out(mpctx); - mpctx->stop_play = orig_stop_play; + } if (mpctx->demuxer) { demux_stop_thread(mpctx->demuxer); -- cgit v1.2.3