Playlist Catalogue: fix: "Save Current Playlist" may fail silently

- After rebooting, unless the current playlist
had been manually resumed already, the "Save
Current Playlist" option in the root menu's/
playlist catalogue's context menu failed to work.

- Eliminate error message attempting to view current
playlist when no control file present.

Change-Id: I58f1d3dc6f256fcee106ff5a17f69fa46d67b2e4
This commit is contained in:
Christian Soffke 2025-01-08 12:35:59 +01:00
parent 897a96996b
commit e5c9846cb4
3 changed files with 17 additions and 1 deletions

View file

@ -48,6 +48,21 @@ int save_playlist_screen(struct playlist_info* playlist)
char temp[MAX_PATH+1], *p; char temp[MAX_PATH+1], *p;
int len; int len;
bool audio_stopped = !(audio_status() & AUDIO_STATUS_PLAY);
/* After a reboot, we may need to resume the playlist
first, or it will not contain any indices when
user selects "Save Current Playlist" from playlist
catalogue's context menu in root menu */
if (!playlist && audio_stopped && !playlist_get_current()->started)
{
if (!file_exists(PLAYLIST_CONTROL_FILE) || playlist_resume() == -1)
{
splash(HZ, ID2P(LANG_CATALOG_NO_PLAYLISTS));
return 0;
}
}
catalog_get_directory(directoryonly, sizeof(directoryonly)); catalog_get_directory(directoryonly, sizeof(directoryonly));
playlist_get_name(playlist, temp, sizeof(temp)-1); playlist_get_name(playlist, temp, sizeof(temp)-1);

View file

@ -2048,6 +2048,7 @@ struct playlist_info* playlist_load(const char* dir, const char* file,
{ {
playlist->max_playlist_size = current_playlist.max_playlist_size; playlist->max_playlist_size = current_playlist.max_playlist_size;
playlist->indices = current_playlist.indices; playlist->indices = current_playlist.indices;
current_playlist.started = false;
} }
new_playlist_unlocked(playlist, dir, file); new_playlist_unlocked(playlist, dir, file);

View file

@ -387,7 +387,7 @@ static bool playlist_viewer_init(struct playlist_viewer * viewer,
if (!filename && !is_playing) if (!filename && !is_playing)
{ {
/* Try to restore the list from control file */ /* Try to restore the list from control file */
if (playlist_resume() == -1) if (!file_exists(PLAYLIST_CONTROL_FILE) || playlist_resume() == -1)
{ {
/* Nothing to view, exit */ /* Nothing to view, exit */
splash(HZ, ID2P(LANG_CATALOG_NO_PLAYLISTS)); splash(HZ, ID2P(LANG_CATALOG_NO_PLAYLISTS));