Fix INSERT_LAST_SHUFFLED when playlist's first_index > 0

Tracks were inserted into the middle of the playlist

Change-Id: I2a665fd3e0fe9d8900d6555e6affc5cb3d7513f8
This commit is contained in:
Christian Soffke 2023-11-06 00:42:20 +01:00
parent 8a6aaaa5ed
commit ba14aecd5e

View file

@ -1298,9 +1298,12 @@ static int add_track_to_playlist_unlocked(struct playlist_info* playlist,
} }
case PLAYLIST_INSERT_LAST_SHUFFLED: case PLAYLIST_INSERT_LAST_SHUFFLED:
{ {
int playlist_end = playlist->first_index > 0 ?
playlist->first_index : playlist->amount;
int newpos = playlist->last_shuffled_start + 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; position = insert_position = newpos;
break; break;
} }
@ -3557,13 +3560,14 @@ out:
return result; 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*/ PLAYLIST_INSERT_LAST_SHUFFLED command purposes*/
void playlist_set_last_shuffled_start(void) void playlist_set_last_shuffled_start(void)
{ {
struct playlist_info* playlist = &current_playlist; struct playlist_info* playlist = &current_playlist;
playlist_write_lock(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); playlist_write_unlock(playlist);
} }