diff options
author | Magnus Holmgren <magnushol@gmail.com> | 2010-08-11 19:01:50 +0000 |
---|---|---|
committer | Magnus Holmgren <magnushol@gmail.com> | 2010-08-11 19:01:50 +0000 |
commit | 113764d9c0dad33beab8ece9a9073c8648bd9da6 (patch) | |
tree | 3411fcb376adcbcb15ec3dc37bc95bb698af7ace /apps/tree.c | |
parent | de44ae7efcf907c8aa52475a7c0dd9f0da22045e (diff) | |
download | rockbox-113764d9c0dad33beab8ece9a9073c8648bd9da6.tar.gz rockbox-113764d9c0dad33beab8ece9a9073c8648bd9da6.zip |
Fix FS#11175. playlist_peek() wasn't thread safe (due to a static filename buffer), so frequent calls from the main thread would cause the audio thread to buffer the wrong track.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27773 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/tree.c')
-rw-r--r-- | apps/tree.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/apps/tree.c b/apps/tree.c index c2ec4ca3ec..f8874f684e 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -1075,6 +1075,7 @@ bool bookmark_play(char *resume_file, int index, int offset, int seed, lastdir[0]='\0'; if (playlist_create(resume_file, NULL) != -1) { + char filename_buf[MAX_PATH + 1]; const char* peek_filename; resume_directory(resume_file); if (global_settings.playlist_shuffle) @@ -1082,13 +1083,15 @@ bool bookmark_play(char *resume_file, int index, int offset, int seed, /* Check if the file is at the same spot in the directory, else search for it */ - peek_filename = playlist_peek(index); + peek_filename = playlist_peek(index, filename_buf, + sizeof(filename_buf)); if (peek_filename == NULL) { /* playlist has shrunk, search from the top */ index = 0; - peek_filename = playlist_peek(index); + peek_filename = playlist_peek(index, filename_buf, + sizeof(filename_buf)); if (peek_filename == NULL) return false; } @@ -1097,7 +1100,8 @@ bool bookmark_play(char *resume_file, int index, int offset, int seed, { for ( i=0; i < playlist_amount(); i++ ) { - peek_filename = playlist_peek(i); + peek_filename = playlist_peek(i, filename_buf, + sizeof(filename_buf)); if (peek_filename == NULL) return false; |