diff options
Diffstat (limited to 'apps/playlist.c')
-rw-r--r-- | apps/playlist.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/apps/playlist.c b/apps/playlist.c index c15c394b4c..6c1d97a6ef 100644 --- a/apps/playlist.c +++ b/apps/playlist.c | |||
@@ -821,7 +821,7 @@ static int add_track_to_playlist(struct playlist_info* playlist, | |||
821 | playlist->num_inserted_tracks++; | 821 | playlist->num_inserted_tracks++; |
822 | 822 | ||
823 | /* Update index for resume. */ | 823 | /* Update index for resume. */ |
824 | playback_set_playlist_index(playlist->index); | 824 | playlist_update_resume_index(); |
825 | 825 | ||
826 | return insert_position; | 826 | return insert_position; |
827 | } | 827 | } |
@@ -924,7 +924,7 @@ static int remove_track_from_playlist(struct playlist_info* playlist, | |||
924 | } | 924 | } |
925 | 925 | ||
926 | /* Update index for resume. */ | 926 | /* Update index for resume. */ |
927 | playback_set_playlist_index(playlist->index); | 927 | playlist_update_resume_index(); |
928 | 928 | ||
929 | return 0; | 929 | return 0; |
930 | } | 930 | } |
@@ -986,7 +986,7 @@ static int randomise_playlist(struct playlist_info* playlist, | |||
986 | } | 986 | } |
987 | 987 | ||
988 | /* Update index for resume. */ | 988 | /* Update index for resume. */ |
989 | playback_set_playlist_index(playlist->index); | 989 | playlist_update_resume_index(); |
990 | 990 | ||
991 | return 0; | 991 | return 0; |
992 | } | 992 | } |
@@ -1029,7 +1029,7 @@ static int sort_playlist(struct playlist_info* playlist, bool start_current, | |||
1029 | } | 1029 | } |
1030 | 1030 | ||
1031 | /* Update index for resume. */ | 1031 | /* Update index for resume. */ |
1032 | playback_set_playlist_index(playlist->index); | 1032 | playlist_update_resume_index(); |
1033 | 1033 | ||
1034 | return 0; | 1034 | return 0; |
1035 | } | 1035 | } |
@@ -1205,7 +1205,7 @@ static void find_and_set_playlist_index(struct playlist_info* playlist, | |||
1205 | } | 1205 | } |
1206 | 1206 | ||
1207 | /* Update index for resume. */ | 1207 | /* Update index for resume. */ |
1208 | playback_set_playlist_index(playlist->index); | 1208 | playlist_update_resume_index(); |
1209 | } | 1209 | } |
1210 | 1210 | ||
1211 | /* | 1211 | /* |
@@ -2633,15 +2633,24 @@ int playlist_get_index(void) | |||
2633 | return current_playlist.index; | 2633 | return current_playlist.index; |
2634 | } | 2634 | } |
2635 | 2635 | ||
2636 | /* Update resume index within playlist_info structure. */ | ||
2637 | void playlist_update_resume_index(void) | ||
2638 | { | ||
2639 | struct playlist_info* playlist = ¤t_playlist; | ||
2640 | playlist->resume_index = playlist->index; | ||
2641 | } | ||
2642 | |||
2636 | /* Update resume info for current playing song. Returns -1 on error. */ | 2643 | /* Update resume info for current playing song. Returns -1 on error. */ |
2637 | int playlist_update_resume_info(const struct mp3entry* id3) | 2644 | int playlist_update_resume_info(const struct mp3entry* id3) |
2638 | { | 2645 | { |
2646 | struct playlist_info* playlist = ¤t_playlist; | ||
2647 | |||
2639 | if (id3) | 2648 | if (id3) |
2640 | { | 2649 | { |
2641 | if (global_status.resume_index != id3->index || | 2650 | if (global_status.resume_index != playlist->resume_index || |
2642 | global_status.resume_offset != id3->offset) | 2651 | global_status.resume_offset != id3->offset) |
2643 | { | 2652 | { |
2644 | global_status.resume_index = id3->index; | 2653 | global_status.resume_index = playlist->resume_index; |
2645 | global_status.resume_offset = id3->offset; | 2654 | global_status.resume_offset = id3->offset; |
2646 | status_save(); | 2655 | status_save(); |
2647 | } | 2656 | } |
@@ -3190,7 +3199,7 @@ int playlist_move(struct playlist_info* playlist, int index, int new_index) | |||
3190 | #endif | 3199 | #endif |
3191 | 3200 | ||
3192 | /* Update index for resume. */ | 3201 | /* Update index for resume. */ |
3193 | playback_set_playlist_index(playlist->index); | 3202 | playlist_update_resume_index(); |
3194 | 3203 | ||
3195 | return result; | 3204 | return result; |
3196 | } | 3205 | } |