summaryrefslogtreecommitdiffstats
path: root/player/playloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/playloop.c')
-rw-r--r--player/playloop.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/player/playloop.c b/player/playloop.c
index 18a51f33d0..f72994e8a9 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -249,6 +249,8 @@ static void mp_seek(MPContext *mpctx, struct seek_params seek)
bool hr_seek_very_exact = seek.exact == MPSEEK_VERY_EXACT;
double current_time = get_current_time(mpctx);
+ if (current_time == MP_NOPTS_VALUE && seek.type == MPSEEK_RELATIVE)
+ return;
if (current_time == MP_NOPTS_VALUE)
current_time = 0;
double seek_pts = MP_NOPTS_VALUE;
@@ -606,8 +608,8 @@ static void handle_pause_on_low_cache(struct MPContext *mpctx)
if (mpctx->restart_complete && c.size > 0) {
if (mpctx->paused && mpctx->paused_for_cache) {
- if (!opts->cache_pausing || s.ts_duration >= mpctx->cache_wait_time
- || s.idle)
+ if (!s.underrun && (!opts->cache_pausing || s.idle ||
+ s.ts_duration >= mpctx->cache_wait_time))
{
double elapsed_time = now - mpctx->cache_stop_time;
if (elapsed_time > mpctx->cache_wait_time) {
@@ -906,7 +908,7 @@ int handle_force_window(struct MPContext *mpctx, bool force)
};
if (vo_reconfig(vo, &p) < 0)
goto err;
- vo_control(vo, VOCTRL_RESTORE_SCREENSAVER, NULL);
+ update_screensaver_state(mpctx);
vo_set_paused(vo, true);
vo_redraw(vo);
mp_notify(mpctx, MPV_EVENT_VIDEO_RECONFIG, NULL);
@@ -1093,7 +1095,7 @@ void run_playloop(struct MPContext *mpctx)
handle_dummy_ticks(mpctx);
update_osd_msg(mpctx);
- if (!mpctx->video_out)
+ if (mpctx->video_status == STATUS_EOF)
update_subtitles(mpctx, mpctx->playback_pts);
handle_eof(mpctx);