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/gui/skin_engine/skin_display.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/gui/skin_engine/skin_display.c')
-rw-r--r-- | apps/gui/skin_engine/skin_display.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index b5b9b4d7a6..83fea8c73c 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c @@ -218,7 +218,7 @@ void draw_playlist_viewer_list(struct gui_wps *gwps, struct playlistviewer *view int x, length, alignment = SKIN_TOKEN_ALIGN_LEFT; struct mp3entry *pid3; - char buf[MAX_PATH*2], tempbuf[MAX_PATH]; + char buf[MAX_PATH*2], tempbuf[MAX_PATH], filename_buf[MAX_PATH + 1]; const char *filename; #if CONFIG_TUNER if (current_screen() == GO_TO_FM) @@ -249,7 +249,8 @@ void draw_playlist_viewer_list(struct gui_wps *gwps, struct playlistviewer *view else #endif { - filename = playlist_peek(i-cur_pos); + filename = playlist_peek(i-cur_pos, filename_buf, + sizeof(filename_buf)); if (i == cur_pos) { pid3 = state->id3; |