player: fix framestep over timeline segment boundaries

This was subtly broken by commit a937ba20. Instead of framestepping over
the timeline segment boundary, it would just unpause playback, because
seeking now resets mpctx->step_frames. This was especially apparent when
doing something like "mpv *.jpg --merge-files".

Fix by restoring the step_frames field specifically if the seek is done
for switching segment boundaries. Hopefully the number fields which need
such an exception on seeking won't grow and turn this code into a mess.
This commit is contained in:
wm4 2015-01-26 12:29:27 +01:00
parent 751830da32
commit 792db4eee3
1 changed files with 2 additions and 0 deletions

View File

@ -169,6 +169,7 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek,
{
struct MPOpts *opts = mpctx->opts;
uint64_t prev_seek_ts = mpctx->vo_pts_history_seek_ts;
int prev_step = mpctx->step_frames;
if (!mpctx->demuxer)
return -1;
@ -267,6 +268,7 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek,
if (timeline_fallthrough) {
// Important if video reinit happens.
mpctx->vo_pts_history_seek_ts = prev_seek_ts;
mpctx->step_frames = prev_step;
} else {
mpctx->vo_pts_history_seek_ts++;
mpctx->backstep_active = false;