playlist: Fix warning when erasing playlist after reboot

Unless you had manually resumed the playlist, you
didn't get any warning after Rockbox rebooted, when
replacing a modified current playlist.

Change-Id: Ibc83e3db4e6ee51e94204ac7732760894d2fb602
This commit is contained in:
Christian Soffke 2024-12-31 18:27:19 +01:00
parent 9310b51841
commit fb26398622
3 changed files with 12 additions and 1 deletions

View file

@ -2666,7 +2666,11 @@ int playlist_insert_track(struct playlist_info* playlist, const char *filename,
bool playlist_modified(const struct playlist_info* playlist)
{
if (!playlist)
{
playlist = &current_playlist;
if (!current_playlist.control_created)
return global_status.resume_modified;
}
return !!(playlist->flags & PLAYLIST_FLAG_MODIFIED);
}
@ -3751,11 +3755,14 @@ int playlist_update_resume_info(const struct mp3entry* id3)
{
struct playlist_info* playlist = &current_playlist;
bool pl_modified = (PLAYLIST_FLAG_MODIFIED ==
(playlist->flags & PLAYLIST_FLAG_MODIFIED));
if (id3)
{
if (global_status.resume_index != playlist->index ||
global_status.resume_elapsed != id3->elapsed ||
global_status.resume_offset != id3->offset)
global_status.resume_offset != id3->offset ||
global_status.resume_modified != pl_modified)
{
unsigned int crc = playlist_get_filename_crc32(playlist,
playlist->index);
@ -3763,6 +3770,7 @@ int playlist_update_resume_info(const struct mp3entry* id3)
global_status.resume_crc32 = crc;
global_status.resume_elapsed = id3->elapsed;
global_status.resume_offset = id3->offset;
global_status.resume_modified = pl_modified;
status_save();
}
}
@ -3772,6 +3780,7 @@ int playlist_update_resume_info(const struct mp3entry* id3)
global_status.resume_crc32 = -1;
global_status.resume_elapsed = -1;
global_status.resume_offset = -1;
global_status.resume_modified = false;
status_save();
return -1;
}

View file

@ -340,6 +340,7 @@ struct system_status
int last_volume_change; /* tick the last volume change happened. skins use this */
int font_id[NB_SCREENS]; /* font id of the settings font for each screen */
bool resume_modified; /* playlist is modified (=> warn before erase) */
};
struct user_settings

View file

@ -976,6 +976,7 @@ const struct settings_list settings[] = {
SYSTEM_SETTING(NVRAM(4), resume_crc32, -1),
SYSTEM_SETTING(NVRAM(4), resume_elapsed, -1),
SYSTEM_SETTING(NVRAM(4), resume_offset, -1),
SYSTEM_SETTING(NVRAM(4), resume_modified, false),
CHOICE_SETTING(F_CB_ON_SELECT_ONLY|F_CB_ONLY_IF_CHANGED, repeat_mode,
LANG_REPEAT, REPEAT_OFF, "repeat", "off,all,one,shuffle"
#ifdef AB_REPEAT_ENABLE