summaryrefslogtreecommitdiffstats
path: root/player/playloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/playloop.c')
-rw-r--r--player/playloop.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/player/playloop.c b/player/playloop.c
index 6a22bf166b..61c9ad3b7b 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -778,11 +778,17 @@ static void handle_loop_file(struct MPContext *mpctx)
// Do not attempt to loop-file if --ab-loop is active.
else if (opts->loop_file && mpctx->stop_play == AT_END_OF_FILE) {
- mpctx->stop_play = KEEP_PLAYING;
- set_osd_function(mpctx, OSD_FFW);
- queue_seek(mpctx, MPSEEK_ABSOLUTE, 0, MPSEEK_DEFAULT, MPSEEK_FLAG_NOFLUSH);
- if (opts->loop_file > 0)
- opts->loop_file--;
+ double play_start_pts = get_play_start_pts(mpctx);
+ double play_end_pts = get_play_end_pts(mpctx);
+ if (play_start_pts < play_end_pts){
+ mpctx->stop_play = KEEP_PLAYING;
+ set_osd_function(mpctx, OSD_FFW);
+ queue_seek(mpctx, MPSEEK_ABSOLUTE, play_start_pts, MPSEEK_EXACT,
+ MPSEEK_FLAG_NOFLUSH);
+ if (opts->loop_file > 0)
+ opts->loop_file--;
+ }
+
}
}