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.
This commit is contained in:
wm4 2018-05-17 13:16:26 +02:00 committed by sfan5
parent a832624af9
commit 9fe4e10c7d
1 changed files with 1 additions and 4 deletions

View File

@ -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)