mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -05:00
Fix bookmarking/reloading after saving shuffled playlist
The resume index into the playlist file that was used for bookmarks created immediately after saving a shuffled playlist, or for reloading the saved playlist (in case "Reload After Saving" was enabled), tended to be incorrect. The playlist file effectively isn't shuffled anymore after saving it to a file, but the resume index may still have to be rotated unless playback has been stopped and resumed before bookmarking, due to indices that are shifted by first_index. Change-Id: Id335a7a71adc216989d7b415bfa48237d92fd7b0
This commit is contained in:
parent
3f3e185460
commit
d77c417fd1
3 changed files with 8 additions and 2 deletions
|
|
@ -520,7 +520,11 @@ static char* create_bookmark(char **name,
|
||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
static void get_track_resume_info(struct resume_info *resume_info)
|
static void get_track_resume_info(struct resume_info *resume_info)
|
||||||
{
|
{
|
||||||
|
if (global_settings.playlist_shuffle)
|
||||||
playlist_get_resume_info(&(resume_info->resume_index));
|
playlist_get_resume_info(&(resume_info->resume_index));
|
||||||
|
else
|
||||||
|
resume_info->resume_index = playlist_get_display_index() - 1;
|
||||||
|
|
||||||
resume_info->resume_seed = playlist_get_seed(NULL);
|
resume_info->resume_seed = playlist_get_seed(NULL);
|
||||||
resume_info->id3 = audio_current_track();
|
resume_info->id3 = audio_current_track();
|
||||||
resume_info->repeat_mode = global_settings.repeat_mode;
|
resume_info->repeat_mode = global_settings.repeat_mode;
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ int save_playlist_screen(struct playlist_info* playlist)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* can't trust index from id3 (don't know why), get it from playlist */
|
/* can't trust index from id3 (don't know why), get it from playlist */
|
||||||
resume_index = playlist_get_current()->index;
|
resume_index = playlist_get_display_index() - 1;
|
||||||
|
|
||||||
struct mp3entry* id3 = audio_current_track();
|
struct mp3entry* id3 = audio_current_track();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3886,6 +3886,8 @@ static int pl_save_update_control(struct playlist_info* playlist,
|
||||||
|
|
||||||
/* Reset shuffle seed */
|
/* Reset shuffle seed */
|
||||||
playlist->seed = 0;
|
playlist->seed = 0;
|
||||||
|
if (playlist == ¤t_playlist)
|
||||||
|
global_settings.playlist_shuffle = false;
|
||||||
|
|
||||||
pl_close_control(playlist);
|
pl_close_control(playlist);
|
||||||
close(old_fd);
|
close(old_fd);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue