diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2010-04-17 12:02:02 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2010-04-17 12:02:02 +0000 |
commit | 6c175effc594734a02479d77736d97aac78a1184 (patch) | |
tree | 2e4ccbdf7933b28f946a6f71d90a11bd48473de8 | |
parent | bc18c894344dc3a74c2a71fc13e114b500cf18c1 (diff) | |
download | rockbox-6c175effc594734a02479d77736d97aac78a1184.tar.gz rockbox-6c175effc594734a02479d77736d97aac78a1184.zip |
drop the playlist viewer stack usage by reading straiught off the buffer instead of copying it.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25661 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/gui/skin_engine/skin_display.c | 10 | ||||
-rw-r--r-- | apps/playback.c | 5 |
2 files changed, 7 insertions, 8 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 5aa4d78cad..687c611a49 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c @@ -178,7 +178,7 @@ static void draw_progressbar(struct gui_wps *gwps, } } -bool audio_peek_track(struct mp3entry* id3, int offset); +bool audio_peek_track(struct mp3entry** id3, int offset); static void draw_playlist_viewer_list(struct gui_wps *gwps, struct playlistviewer *viewer) { @@ -192,9 +192,6 @@ static void draw_playlist_viewer_list(struct gui_wps *gwps, int x, length, alignment = WPS_TOKEN_ALIGN_LEFT; struct mp3entry *pid3; -#if CONFIG_CODEC == SWCODEC - struct mp3entry id3; -#endif char buf[MAX_PATH*2], tempbuf[MAX_PATH]; gwps->display->set_viewport(viewer->vp); @@ -209,9 +206,10 @@ static void draw_playlist_viewer_list(struct gui_wps *gwps, pid3 = state->nid3; } #if CONFIG_CODEC == SWCODEC - else if ((i>cur_playlist_pos) && audio_peek_track(&id3, i-cur_playlist_pos)) + else if (i>cur_playlist_pos) { - pid3 = &id3; + if (!audio_peek_track(&pid3, i-cur_playlist_pos)) + pid3 = NULL; } #endif else diff --git a/apps/playback.c b/apps/playback.c index c4fb14ba3e..dc854cbb24 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -629,7 +629,8 @@ struct mp3entry* audio_next_track(void) return NULL; } -bool audio_peek_track(struct mp3entry* id3, int offset) +/* gets a pointer to the id3 data, Not thread safe!, DON'T yield()/sleep() */ +bool audio_peek_track(struct mp3entry** id3, int offset) { int next_idx; int new_offset = ci.new_track + wps_offset + offset; @@ -640,7 +641,7 @@ bool audio_peek_track(struct mp3entry* id3, int offset) if (tracks[next_idx].id3_hid >= 0) { - return bufread(tracks[next_idx].id3_hid, sizeof(struct mp3entry), id3) + return bufgetdata(tracks[next_idx].id3_hid, 0, (void**)id3) == sizeof(struct mp3entry); } return false; |