aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist_edit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/playlist_edit.c')
-rw-r--r--src/playlist_edit.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/playlist_edit.c b/src/playlist_edit.c
index d10f49451..2b7cdd8ae 100644
--- a/src/playlist_edit.c
+++ b/src/playlist_edit.c
@@ -45,14 +45,6 @@ playlist_clear(struct playlist *playlist, struct player_control *pc)
{
playlist_stop(playlist, pc);
- /* make sure there are no references to allocated songs
- anymore */
- for (unsigned i = 0; i < queue_length(&playlist->queue); i++) {
- const struct song *song = queue_get(&playlist->queue, i);
- if (!song_in_database(song))
- pc_song_deleted(pc, song);
- }
-
queue_clear(&playlist->queue);
playlist->current = -1;
@@ -136,7 +128,12 @@ playlist_append_uri(struct playlist *playlist, struct player_control *pc,
if (song == NULL)
return PLAYLIST_RESULT_NO_SUCH_SONG;
- return playlist_append_song(playlist, pc, song, added_id);
+ enum playlist_result result =
+ playlist_append_song(playlist, pc, song, added_id);
+ if (song_in_database(song))
+ db_return_song(song);
+
+ return result;
}
enum playlist_result
@@ -287,9 +284,6 @@ playlist_delete_internal(struct playlist *playlist, struct player_control *pc,
/* now do it: remove the song */
- if (!song_in_database(queue_get(&playlist->queue, song)))
- pc_song_deleted(pc, queue_get(&playlist->queue, song));
-
queue_delete(&playlist->queue, song);
/* update the "current" and "queued" variables */
@@ -363,8 +357,6 @@ playlist_delete_song(struct playlist *playlist, struct player_control *pc,
for (int i = queue_length(&playlist->queue) - 1; i >= 0; --i)
if (song == queue_get(&playlist->queue, i))
playlist_delete(playlist, pc, i);
-
- pc_song_deleted(pc, song);
}
enum playlist_result