summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/mplayer.c b/mplayer.c
index c71e23e327..bb55ac22bc 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -2364,18 +2364,28 @@ if(step_sec>0) {
} break;
case MP_CMD_PLAY_TREE_STEP : {
int n = cmd->args[0].v.i > 0 ? 1 : -1;
- play_tree_iter_t* i = play_tree_iter_new_copy(playtree_iter);
-
- if(play_tree_iter_step(i,n,0) == PLAY_TREE_ITER_ENTRY)
+ int force = cmd->args[1].v.i;
+
+ if(!force) {
+ play_tree_iter_t* i = play_tree_iter_new_copy(playtree_iter);
+
+ if(play_tree_iter_step(i,n,0) == PLAY_TREE_ITER_ENTRY)
+ eof = (n > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY;
+ play_tree_iter_free(i);
+ } else
eof = (n > 0) ? PT_NEXT_ENTRY : PT_PREV_ENTRY;
- play_tree_iter_free(i);
} break;
case MP_CMD_PLAY_TREE_UP_STEP : {
int n = cmd->args[0].v.i > 0 ? 1 : -1;
- play_tree_iter_t* i = play_tree_iter_new_copy(playtree_iter);
- if(play_tree_iter_up_step(i,n,0) == PLAY_TREE_ITER_ENTRY)
+ int force = cmd->args[1].v.i;
+
+ if(!force) {
+ play_tree_iter_t* i = play_tree_iter_new_copy(playtree_iter);
+ if(play_tree_iter_up_step(i,n,0) == PLAY_TREE_ITER_ENTRY)
+ eof = (n > 0) ? PT_UP_NEXT : PT_UP_PREV;
+ play_tree_iter_free(i);
+ } else
eof = (n > 0) ? PT_UP_NEXT : PT_UP_PREV;
- play_tree_iter_free(i);
} break;
case MP_CMD_PLAY_ALT_SRC_STEP : {
if(playtree_iter->num_files > 1) {