From aee0978d50e21d8f114382fdb9c014c029f71a04 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 12 Feb 2015 22:41:45 +0100 Subject: player: add a --loop=force mode Requested. See manpage additions. This also makes the magical loop_times constants slightly saner, but shouldn't change the semantics of any existing --loop option values. --- player/loadfile.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'player/loadfile.c') diff --git a/player/loadfile.c b/player/loadfile.c index 6560fe7806..d9d6a0036c 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -1317,26 +1317,24 @@ struct playlist_entry *mp_next_file(struct MPContext *mpctx, int direction, while (next && next->playback_short) next = next->prev; // Always allow jumping to first file - if (!next && mpctx->opts->loop_times < 0) + if (!next && mpctx->opts->loop_times == 1) next = mpctx->playlist->first; } - if (!next && mpctx->opts->loop_times >= 0) { + if (!next && mpctx->opts->loop_times != 1) { if (direction > 0) { if (mpctx->opts->shuffle) playlist_shuffle(mpctx->playlist); next = mpctx->playlist->first; - if (next && mpctx->opts->loop_times > 1) { + if (next && mpctx->opts->loop_times > 1) mpctx->opts->loop_times--; - if (mpctx->opts->loop_times == 1) - mpctx->opts->loop_times = -1; - } } else { next = mpctx->playlist->last; // Don't jump to files that would immediately go to next file anyway while (next && next->playback_short) next = next->prev; } - if (!force && next && next->init_failed) { + bool ignore_failures = mpctx->opts->loop_times == -2; + if (!force && next && next->init_failed && !ignore_failures) { // Don't endless loop if no file in playlist is playable bool all_failed = true; struct playlist_entry *cur; -- cgit v1.2.3