diff options
author | wm4 <wm4@nowhere> | 2018-05-17 13:16:26 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2018-05-24 19:56:34 +0200 |
commit | ec7d1e86b60f1c684bc9778a9ce958a9ecd54735 (patch) | |
tree | a0ce50f682e3968dabcbdef8516a98443a9c2119 | |
parent | 4d2b3fca3b5c6e61d2ff3a22f78b1b640500808e (diff) | |
download | mpv-ec7d1e86b60f1c684bc9778a9ce958a9ecd54735.tar.bz2 mpv-ec7d1e86b60f1c684bc9778a9ce958a9ecd54735.tar.xz |
player: use canonical playback time for video refreshes
When changing video filters during initialization, there was a small
time window where video was initialized, but playback restart was not
complete yet. In this time window, playback_pts is not set. But since
issue_refresh_seek() was using this, it could lead to no refresh being
done _if_ the "video" had only 1 frame (such as cover art).
Fix this by using get_current_time() instead, which is the current time
with corner cases such as ongoing loading or seeks taken into account.
See also the previous commit. Without that, get_current_time() could
return NOPTS during init.
Fixes #5831.
-rw-r--r-- | player/misc.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/player/misc.c b/player/misc.c index 88767ce2d0..f2e6f05173 100644 --- a/player/misc.c +++ b/player/misc.c @@ -200,10 +200,7 @@ void issue_refresh_seek(struct MPContext *mpctx, enum seek_precision min_prec) mp_wakeup_core(mpctx); return; } - // maybe happens when changing filters while file is loaded - ignore for now - if (mpctx->playback_pts == MP_NOPTS_VALUE) - return; - queue_seek(mpctx, MPSEEK_ABSOLUTE, mpctx->playback_pts, min_prec, 0); + queue_seek(mpctx, MPSEEK_ABSOLUTE, get_current_time(mpctx), min_prec, 0); } float mp_get_cache_percent(struct MPContext *mpctx) |