summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Low <lostlogic@rockbox.org>2006-04-11 15:45:11 +0000
committerBrandon Low <lostlogic@rockbox.org>2006-04-11 15:45:11 +0000
commit73365c8bdac1fc0c2d4f67b050b397b8e16f9c5b (patch)
tree4f321f948ccc0ead03a4f10ee6be411d61a817bd
parentb6607459c2bac541381164bb8356983678e5c430 (diff)
downloadrockbox-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.c14
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");