diff options
author | Nicolas Pennequin <nicolas.pennequin@free.fr> | 2007-10-25 22:52:40 +0000 |
---|---|---|
committer | Nicolas Pennequin <nicolas.pennequin@free.fr> | 2007-10-25 22:52:40 +0000 |
commit | 14da611cd32d084813bb0d2e2318b81c3ea2953a (patch) | |
tree | ad42fbf5b3778ea80430f9bf51bb270b64eafa10 /apps/playback.c | |
parent | c9389e4ee86b5626b36fdf15220aa793fd651030 (diff) |
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
Diffstat (limited to 'apps/playback.c')
-rw-r--r-- | apps/playback.c | 7 |
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()) |