diff options
| author | Brandon Low <lostlogic@rockbox.org> | 2006-04-11 15:45:11 +0000 |
|---|---|---|
| committer | Brandon Low <lostlogic@rockbox.org> | 2006-04-11 15:45:11 +0000 |
| commit | 73365c8bdac1fc0c2d4f67b050b397b8e16f9c5b (patch) | |
| tree | 4f321f948ccc0ead03a4f10ee6be411d61a817bd | |
| parent | b6607459c2bac541381164bb8356983678e5c430 (diff) | |
| download | rockbox-73365c8bdac1fc0c2d4f67b050b397b8e16f9c5b.zip rockbox-73365c8bdac1fc0c2d4f67b050b397b8e16f9c5b.tar.gz rockbox-73365c8bdac1fc0c2d4f67b050b397b8e16f9c5b.tar.bz2 rockbox-73365c8bdac1fc0c2d4f67b050b397b8e16f9c5b.tar.xz | |
Fix a (very unlikely) bug in buffering
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9611 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/playback.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/apps/playback.c b/apps/playback.c index 99de8ad..2cf07f4 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1590,17 +1590,11 @@ static void initialize_buffer_fill(bool start_play) /* Recalculate remaining bytes to buffer, but always leave extra * data for the currently playing codec to seek back into */ size_t buf_bytesleft = filebuflen - filebufused; + size_t subtract = + MIN(MIN(AUDIO_REBUFFER_GUESS_SIZE, ci.curpos), buf_bytesleft); - if (buf_bytesleft > AUDIO_REBUFFER_GUESS_SIZE) - fill_bytesleft = buf_bytesleft - AUDIO_REBUFFER_GUESS_SIZE; - else - fill_bytesleft = 0; - - if (ci.curpos > AUDIO_REBUFFER_GUESS_SIZE) - tracks[track_ridx].start_pos = - ci.curpos - AUDIO_REBUFFER_GUESS_SIZE; - else - tracks[track_ridx].start_pos = 0; + fill_bytesleft = buf_bytesleft - subtract; + tracks[track_ridx].start_pos = ci.curpos - subtract; } logf("Starting buffer fill"); |