summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2011-04-06 19:11:40 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2011-04-06 19:11:40 +0000
commit3184cbe10add23e0e4e53523a06e311db0ba15cd (patch)
tree398f34c994e26a3255337b583824952721ab378e /apps
parentc7227a76206960f8373def21aea71cd1b7e9e5c4 (diff)
downloadrockbox-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.c2
-rw-r--r--apps/playlist.c14
-rw-r--r--apps/playlist.h1
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 = &current_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);