Commit 0478a8e2 authored by Max Kellermann's avatar Max Kellermann

playlist_edit: moved code to playlist_delete_internal()

parent 1039d572
...@@ -208,16 +208,13 @@ playlist_swap_songs_id(struct playlist *playlist, unsigned id1, unsigned id2) ...@@ -208,16 +208,13 @@ playlist_swap_songs_id(struct playlist *playlist, unsigned id1, unsigned id2)
return playlist_swap_songs(playlist, song1, song2); return playlist_swap_songs(playlist, song1, song2);
} }
enum playlist_result static void
playlist_delete(struct playlist *playlist, unsigned song) playlist_delete_internal(struct playlist *playlist, unsigned song,
const struct song **queued_p)
{ {
const struct song *queued;
unsigned songOrder; unsigned songOrder;
if (song >= queue_length(&playlist->queue)) assert(song < queue_length(&playlist->queue));
return PLAYLIST_RESULT_BAD_RANGE;
queued = playlist_get_queued_song(playlist);
songOrder = queue_position_to_order(&playlist->queue, song); songOrder = queue_position_to_order(&playlist->queue, song);
...@@ -244,7 +241,7 @@ playlist_delete(struct playlist *playlist, unsigned song) ...@@ -244,7 +241,7 @@ playlist_delete(struct playlist *playlist, unsigned song)
completely */ completely */
playlist_stop(playlist); playlist_stop(playlist);
queued = NULL; *queued_p = NULL;
} else if (playlist->current == (int)songOrder) } else if (playlist->current == (int)songOrder)
/* there's a "current song" but we're not playing /* there's a "current song" but we're not playing
currently - clear "current" */ currently - clear "current" */
...@@ -257,14 +254,26 @@ playlist_delete(struct playlist *playlist, unsigned song) ...@@ -257,14 +254,26 @@ playlist_delete(struct playlist *playlist, unsigned song)
queue_delete(&playlist->queue, song); queue_delete(&playlist->queue, song);
playlist_increment_version(playlist);
/* update the "current" and "queued" variables */ /* update the "current" and "queued" variables */
if (playlist->current > (int)songOrder) { if (playlist->current > (int)songOrder) {
playlist->current--; playlist->current--;
} }
}
enum playlist_result
playlist_delete(struct playlist *playlist, unsigned song)
{
const struct song *queued;
if (song >= queue_length(&playlist->queue))
return PLAYLIST_RESULT_BAD_RANGE;
queued = playlist_get_queued_song(playlist);
playlist_delete_internal(playlist, song, &queued);
playlist_increment_version(playlist);
playlist_update_queued_song(playlist, queued); playlist_update_queued_song(playlist, queued);
return PLAYLIST_RESULT_SUCCESS; return PLAYLIST_RESULT_SUCCESS;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment