diff options
| author | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-04-06 19:11:40 +0000 |
|---|---|---|
| committer | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-04-06 19:11:40 +0000 |
| commit | 3184cbe10add23e0e4e53523a06e311db0ba15cd (patch) | |
| tree | 398f34c994e26a3255337b583824952721ab378e /apps | |
| parent | c7227a76206960f8373def21aea71cd1b7e9e5c4 (diff) | |
| download | rockbox-3184cbe10add23e0e4e53523a06e311db0ba15cd.zip rockbox-3184cbe10add23e0e4e53523a06e311db0ba15cd.tar.gz rockbox-3184cbe10add23e0e4e53523a06e311db0ba15cd.tar.bz2 rockbox-3184cbe10add23e0e4e53523a06e311db0ba15cd.tar.xz | |
Fix FS#12043. Next track was resumed when pausing and shutting down the player in the last seconds of a track.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29682 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/playback.c | 2 | ||||
| -rw-r--r-- | apps/playlist.c | 14 | ||||
| -rw-r--r-- | apps/playlist.h | 1 |
3 files changed, 12 insertions, 5 deletions
diff --git a/apps/playback.c b/apps/playback.c index 2c34adf..ea26ed1 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -2207,6 +2207,8 @@ static void audio_thread(void) case Q_AUDIO_TRACK_CHANGED: /* PCM track change done */ LOGFQUEUE("audio < Q_AUDIO_TRACK_CHANGED"); + /* Set new playlist position for resuming. */ + thistrack_id3->index = playlist_get_index(); if (filling != STATE_ENDING) audio_finalise_track_change(); else if (playing) diff --git a/apps/playlist.c b/apps/playlist.c index bbbbe22..f65be48 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -2612,24 +2612,28 @@ int playlist_get_resume_info(int *resume_index) return 0; } +/* Get current playlist index. */ +int playlist_get_index(void) +{ + return current_playlist.index; +} + /* Update resume info for current playing song. Returns -1 on error. */ int playlist_update_resume_info(const struct mp3entry* id3) { - struct playlist_info* playlist = ¤t_playlist; - if (id3) { - if (global_status.resume_index != playlist->index || + if (global_status.resume_index != id3->index || global_status.resume_offset != id3->offset) { - global_status.resume_index = playlist->index; + global_status.resume_index = id3->index; global_status.resume_offset = id3->offset; status_save(); } } else { - global_status.resume_index = -1; + global_status.resume_index = -1; global_status.resume_offset = -1; status_save(); } diff --git a/apps/playlist.h b/apps/playlist.h index 9c45769..e582620 100644 --- a/apps/playlist.h +++ b/apps/playlist.h @@ -131,6 +131,7 @@ const char *playlist_peek(int steps, char* buf, size_t buf_size); int playlist_next(int steps); bool playlist_next_dir(int direction); int playlist_get_resume_info(int *resume_index); +int playlist_get_index(void); int playlist_update_resume_info(const struct mp3entry* id3); int playlist_get_display_index(void); int playlist_amount(void); |