summaryrefslogtreecommitdiffstats
path: root/player/playloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/playloop.c')
-rw-r--r--player/playloop.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/player/playloop.c b/player/playloop.c
index 6fa7b62292..da21c64d34 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -229,10 +229,9 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek,
double demuxer_amount = seek.amount;
if (mpctx->timeline) {
- bool need_reset = false;
- demuxer_amount = timeline_set_from_time(mpctx, seek.amount,
- &need_reset);
- if (need_reset) {
+ int segment = timeline_get_for_time(mpctx, seek.amount);
+ if (segment != mpctx->timeline_part) {
+ timeline_set_part(mpctx, segment, false);
reinit_video_chain(mpctx);
reinit_audio_chain(mpctx);
reinit_subs(mpctx, 0);
@@ -268,7 +267,6 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek,
double main_new_pos = seek.amount;
if (seek.type != MPSEEK_ABSOLUTE)
main_new_pos = get_main_demux_pts(mpctx);
- main_new_pos -= get_track_video_offset(mpctx, track);
demux_seek(track->demuxer, main_new_pos, SEEK_ABSOLUTE | SEEK_BACKWARD);
}
}