From ba14aecd5eee99742bef94f782a5a10b0821f0ad Mon Sep 17 00:00:00 2001 From: Christian Soffke Date: Mon, 6 Nov 2023 00:42:20 +0100 Subject: Fix INSERT_LAST_SHUFFLED when playlist's first_index > 0 Tracks were inserted into the middle of the playlist Change-Id: I2a665fd3e0fe9d8900d6555e6affc5cb3d7513f8 --- apps/playlist.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'apps') diff --git a/apps/playlist.c b/apps/playlist.c index 78d41ea45e..c0e943cf37 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -1298,9 +1298,12 @@ static int add_track_to_playlist_unlocked(struct playlist_info* playlist, } case PLAYLIST_INSERT_LAST_SHUFFLED: { + int playlist_end = playlist->first_index > 0 ? + playlist->first_index : playlist->amount; + int newpos = playlist->last_shuffled_start + - rand() % (playlist->amount - playlist->last_shuffled_start + 1); - + rand() % (playlist_end - playlist->last_shuffled_start + 1); + position = insert_position = newpos; break; } @@ -3557,13 +3560,14 @@ out: return result; } -/* set playlist->last_shuffle_start to playlist->amount for +/* set playlist->last_shuffle_start to playlist end for PLAYLIST_INSERT_LAST_SHUFFLED command purposes*/ void playlist_set_last_shuffled_start(void) { struct playlist_info* playlist = ¤t_playlist; playlist_write_lock(playlist); - playlist->last_shuffled_start = playlist->amount; + playlist->last_shuffled_start = playlist->first_index > 0 ? + playlist->first_index : playlist->amount; playlist_write_unlock(playlist); } -- cgit v1.2.3