summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Pennequin <nicolas.pennequin@free.fr>2007-10-25 22:52:40 +0000
committerNicolas Pennequin <nicolas.pennequin@free.fr>2007-10-25 22:52:40 +0000
commit14da611cd32d084813bb0d2e2318b81c3ea2953a (patch)
treead42fbf5b3778ea80430f9bf51bb270b64eafa10
parentc9389e4ee86b5626b36fdf15220aa793fd651030 (diff)
downloadrockbox-14da611cd32d084813bb0d2e2318b81c3ea2953a.tar.gz
rockbox-14da611cd32d084813bb0d2e2318b81c3ea2953a.zip
Check the audio queue for new messages while filling the buffer with tracks. This cuts down the long wait for a skip (or any other action) while adding a large number of tracks to the buffer.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15309 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/playback.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 0cda680c0b..1a51bd2c41 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -2616,6 +2616,13 @@ static void audio_fill_file_buffer(bool start_play, size_t offset)
start_play = false;
offset = 0;
sleep(1);
+ if (!queue_empty(&audio_queue)) {
+ /* There's a message in the queue. break the loop to treat it,
+ and go back to filling after that. */
+ LOGFQUEUE("buffering > audio Q_AUDIO_FILL_BUFFER");
+ queue_post(&audio_queue, Q_AUDIO_FILL_BUFFER, 0);
+ break;
+ }
} while (continue_buffering);
if (!had_next_track && audio_next_track())