summaryrefslogtreecommitdiff
path: root/apps/playlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playlist.c')
-rw-r--r--apps/playlist.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/apps/playlist.c b/apps/playlist.c
index 67d59d1aac..024f98d2f3 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -99,6 +99,7 @@
99#include "filetypes.h" 99#include "filetypes.h"
100#include "icons.h" 100#include "icons.h"
101#include "system.h" 101#include "system.h"
102#include "misc.h"
102 103
103#include "lang.h" 104#include "lang.h"
104#include "talk.h" 105#include "talk.h"
@@ -3977,6 +3978,7 @@ int playlist_save(struct playlist_info* playlist, char *filename)
3977 char tmpbuf[MAX_PATH+1]; 3978 char tmpbuf[MAX_PATH+1];
3978 ssize_t pathlen; 3979 ssize_t pathlen;
3979 int rc = 0; 3980 int rc = 0;
3981 bool reload_tracks = false;
3980 3982
3981 if (!playlist) 3983 if (!playlist)
3982 playlist = &current_playlist; 3984 playlist = &current_playlist;
@@ -3996,6 +3998,17 @@ int playlist_save(struct playlist_info* playlist, char *filename)
3996 goto error; 3998 goto error;
3997 } 3999 }
3998 4000
4001 /* Ask if queued tracks should be removed, so that
4002 playlist can be bookmarked after it's been saved */
4003 for (int i = playlist->amount - 1; i >= 0; i--)
4004 if (playlist->indices[i] & PLAYLIST_QUEUED)
4005 {
4006 if (reload_tracks || (reload_tracks = (confirm_remove_queued_yesno() == YESNO_YES)))
4007 remove_track_unlocked(playlist, i, false);
4008 else
4009 break;
4010 }
4011
3999 rc = pl_save_playlist(playlist, save_path, tmpbuf, sizeof(tmpbuf)); 4012 rc = pl_save_playlist(playlist, save_path, tmpbuf, sizeof(tmpbuf));
4000 if (rc < 0) 4013 if (rc < 0)
4001 { 4014 {
@@ -4030,5 +4043,8 @@ error:
4030 playlist_write_unlock(playlist); 4043 playlist_write_unlock(playlist);
4031 dc_thread_start(playlist, true); 4044 dc_thread_start(playlist, true);
4032 cpu_boost(false); 4045 cpu_boost(false);
4046 if (reload_tracks && playlist->started &&
4047 (audio_status() & AUDIO_STATUS_PLAY))
4048 audio_flush_and_reload_tracks();
4033 return rc; 4049 return rc;
4034} 4050}