summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/playlist.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/apps/playlist.c b/apps/playlist.c
index 8c208687c8..7942bac1ca 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -1020,13 +1020,15 @@ void playlist_skip_entry(struct playlist_info *playlist, int steps)
1020 if (playlist == NULL) 1020 if (playlist == NULL)
1021 playlist = &current_playlist; 1021 playlist = &current_playlist;
1022 1022
1023 index = rotate_index(playlist, playlist->index); 1023 /* need to account for already skipped tracks */
1024 /* We should also skip already skipped entries before the entry to be skipepd. */ 1024 steps = calculate_step_count(playlist, steps);
1025 index += calculate_step_count(playlist, steps); 1025
1026 if (index < 0 || index >= playlist->amount) 1026 index = playlist->index + steps;
1027 return ; 1027 if (index < 0)
1028 1028 index += playlist->amount;
1029 index = (index+playlist->first_index) % playlist->amount; 1029 else if (index >= playlist->amount)
1030 index -= playlist->amount;
1031
1030 playlist->indices[index] |= PLAYLIST_SKIPPED; 1032 playlist->indices[index] |= PLAYLIST_SKIPPED;
1031} 1033}
1032 1034