summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demux/demux.c2
-rw-r--r--player/playloop.c12
2 files changed, 7 insertions, 7 deletions
diff --git a/demux/demux.c b/demux/demux.c
index 2560a0736d..c62c0754b8 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -1185,7 +1185,7 @@ static int cached_demux_control(struct demux_internal *in, int cmd, void *arg)
r->ts_range[1] = MP_PTS_MIN(r->ts_range[1], ds->last_ts);
}
}
- r->idle &= !r->underrun;
+ r->idle = (r->idle && !r->underrun) || r->eof;
return DEMUXER_CTRL_OK;
}
}
diff --git a/player/playloop.c b/player/playloop.c
index 026e4fda83..89af8fa55b 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -525,22 +525,25 @@ static void handle_pause_on_low_cache(struct MPContext *mpctx)
{.idle = true, .ts_range = {MP_NOPTS_VALUE, MP_NOPTS_VALUE}};
demux_control(mpctx->demuxer, DEMUXER_CTRL_GET_READER_STATE, &s);
+ int idle = -1;
+ demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_IDLE, &idle);
+
double range = -1;
if (s.ts_range[0] != MP_NOPTS_VALUE && s.ts_range[1] != MP_NOPTS_VALUE)
range = s.ts_range[1] - s.ts_range[0];
if (range < 0)
range = 1e20; // unknown/broken timestamps; disable
- if (mpctx->restart_complete) {
+ if (mpctx->restart_complete && idle != -1) {
if (mpctx->paused && mpctx->paused_for_cache) {
- if (!opts->cache_pausing || range >= 2.0 || s.eof) {
+ if (!opts->cache_pausing || range >= 2.0 || s.idle) {
mpctx->paused_for_cache = false;
if (!opts->pause)
unpause_player(mpctx);
}
mpctx->sleeptime = MPMIN(mpctx->sleeptime, 0.2);
} else {
- if (opts->cache_pausing && range < 0.5 && !s.eof) {
+ if (opts->cache_pausing && range < 0.5 && !s.idle) {
bool prev_paused_user = opts->pause;
pause_player(mpctx);
mpctx->paused_for_cache = true;
@@ -549,9 +552,6 @@ static void handle_pause_on_low_cache(struct MPContext *mpctx)
}
}
- int idle = 1;
- demux_stream_control(mpctx->demuxer, STREAM_CTRL_GET_CACHE_IDLE, &idle);
-
// Also update cache properties.
bool busy = idle == 0 || !s.idle;
if (busy || mpctx->next_cache_update > 0) {