summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorBrandon Low <lostlogic@rockbox.org>2006-04-10 04:14:20 +0000
committerBrandon Low <lostlogic@rockbox.org>2006-04-10 04:14:20 +0000
commit2caad6fbc112c7b0d8f54383e9406063661aa127 (patch)
tree6234d5c27c4d2b84a09fcc80a181ea81ab246f4e /apps
parent2f943b054c4eb630c9b5b7170da38e494c1be235 (diff)
downloadrockbox-2caad6fbc112c7b0d8f54383e9406063661aa127.tar.gz
rockbox-2caad6fbc112c7b0d8f54383e9406063661aa127.zip
Get the next track's metadata in a more timely manner
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9591 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/playback.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/apps/playback.c b/apps/playback.c
index e8114caff5..21a9f66d74 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -1481,28 +1481,31 @@ static void audio_fill_file_buffer(bool start_play, size_t offset)
initialize_buffer_fill(start_play);
- /* If we have a partially buffered track, continue loading, otherwise
- * load a new track */
+ /* If we have a partially buffered track, continue loading,
+ * otherwise load a new track */
if (tracks[track_widx].filesize > 0)
audio_read_file();
else if (!audio_load_track(offset, start_play, last_peek_offset + 1))
fill_bytesleft = 0;
- /* If we're done buffering */
- if (fill_bytesleft <= 0)
+ /* Read next unbuffered track's metadata as soon as playback begins */
+ if (pcm_is_playing() || fill_bytesleft <= 0)
{
- /* Read next unbuffered track's metadata as necessary. */
read_next_metadata();
- generate_postbuffer_events();
- filling = false;
- filling_initial = false;
- pcmbuf_set_boost_mode(false);
+ /* If we're done buffering */
+ if (fill_bytesleft <= 0)
+ {
+ generate_postbuffer_events();
+ filling = false;
+ filling_initial = false;
+ pcmbuf_set_boost_mode(false);
#ifndef SIMULATOR
- if (playing)
- ata_sleep();
+ if (playing)
+ ata_sleep();
#endif
+ }
}
}