From 9806e9f82b64b6c5336cbaaa7c8ce0ef12a56c4f Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 17 Sep 2020 15:34:40 +0200 Subject: command, demux: make drop-buffers reset state even harder Leave nothing left when it's executed. --- demux/demux.c | 11 +++++++++-- player/command.c | 3 +-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/demux/demux.c b/demux/demux.c index 8fcafec9df..e4dda43cf0 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -3487,12 +3487,19 @@ void demux_flush(demuxer_t *demuxer) struct demux_internal *in = demuxer->in; assert(demuxer == in->d_user); - pthread_mutex_lock(&demuxer->in->lock); + pthread_mutex_lock(&in->lock); clear_reader_state(in, true); for (int n = 0; n < in->num_ranges; n++) clear_cached_range(in, in->ranges[n]); free_empty_cached_ranges(in); - pthread_mutex_unlock(&demuxer->in->lock); + for (int n = 0; n < in->num_streams; n++) { + struct demux_stream *ds = in->streams[n]->ds; + ds->refreshing = false; + ds->eof = false; + } + in->eof = false; + in->seeking = false; + pthread_mutex_unlock(&in->lock); } // Does some (but not all) things for switching to another range. diff --git a/player/command.c b/player/command.c index b0753b690a..5197dafffc 100644 --- a/player/command.c +++ b/player/command.c @@ -5561,8 +5561,7 @@ static void cmd_drop_buffers(void *p) struct mp_cmd_ctx *cmd = p; struct MPContext *mpctx = cmd->mpctx; - reset_audio_state(mpctx); - reset_video_state(mpctx); + reset_playback_state(mpctx); if (mpctx->demuxer) demux_flush(mpctx->demuxer); -- cgit v1.2.3