Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: apps/gui/skin_engine/skin_display.c
- ===================================================================
- --- apps/gui/skin_engine/skin_display.c (revision 25615)
- +++ apps/gui/skin_engine/skin_display.c (working copy)
- @@ -178,7 +178,7 @@
- }
- }
- -bool audio_peek_track(struct mp3entry* id3, int offset);
- +bool audio_peek_track_noblock(struct mp3entry* id3, int offset);
- static void draw_playlist_viewer_list(struct gui_wps *gwps,
- struct playlistviewer *viewer)
- {
- @@ -210,7 +210,8 @@
- 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) &&
- + audio_peek_track_noblock(&id3, i-cur_playlist_pos))
- {
- pid3 = &id3;
- }
- Index: apps/playback.c
- ===================================================================
- --- apps/playback.c (revision 25615)
- +++ apps/playback.c (working copy)
- @@ -646,6 +646,24 @@
- return false;
- }
- +bool audio_peek_track_noblock(struct mp3entry* id3, int offset)
- +{
- + int next_idx;
- + int new_offset = ci.new_track + wps_offset + offset;
- +
- + if (!audio_have_tracks())
- + return false;
- + next_idx = (track_ridx + new_offset) & MAX_TRACK_MASK;
- +
- + if (tracks[next_idx].id3_hid >= 0 &&
- + (bufavailable(tracks[next_idx].id3_hid) == sizeof(struct mp3entry)))
- + {
- + return bufread(tracks[next_idx].id3_hid, sizeof(struct mp3entry), id3)
- + == sizeof(struct mp3entry);
- + }
- + return false;
- +}
- +
- #ifdef HAVE_ALBUMART
- int playback_current_aa_hid(int slot)
- {
- Index: apps/buffering.c
- ===================================================================
- --- apps/buffering.c (revision 25615)
- +++ apps/buffering.c (working copy)
- @@ -1307,6 +1307,19 @@
- return adjusted_size;
- }
- +ssize_t bufavailable(int handle_id)
- +{
- + const struct memory_handle *h;
- +
- + h = find_handle(handle_id);
- +
- + if (!h)
- + return ERR_HANDLE_NOT_FOUND;
- +
- + return h->available;
- +}
- +
- +
- ssize_t bufgettail(int handle_id, size_t size, void **data)
- {
- size_t tidx;
- Index: apps/buffering.h
- ===================================================================
- --- apps/buffering.h (revision 25615)
- +++ apps/buffering.h (working copy)
- @@ -64,6 +64,7 @@
- * bufadvance: Move handle reading index, relatively to current position
- * bufread : Copy data from a handle to a buffer
- * bufgetdata: Obtain a pointer for linear access to a "size" amount of data
- + * bufavailable: Get the number of bytes currently available for the handle
- * bufgettail: Out-of-band get the last size bytes of a handle.
- * bufcuttail: Out-of-band remove the trailing 'size' bytes of a handle.
- *
- @@ -82,6 +83,7 @@
- int bufadvance(int handle_id, off_t offset);
- ssize_t bufread(int handle_id, size_t size, void *dest);
- ssize_t bufgetdata(int handle_id, size_t size, void **data);
- +ssize_t bufavailable(int handle_id);
- ssize_t bufgettail(int handle_id, size_t size, void **data);
- ssize_t bufcuttail(int handle_id, size_t size);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement