diff options
| author | Nicolas Pennequin <nicolas.pennequin@free.fr> | 2007-11-26 23:51:36 +0000 |
|---|---|---|
| committer | Nicolas Pennequin <nicolas.pennequin@free.fr> | 2007-11-26 23:51:36 +0000 |
| commit | 774fd19c37f02654ea690f8e4e91ec09bde30789 (patch) | |
| tree | 9dbdb4b8640a358742d8ee0c807bb97475256180 /apps | |
| parent | 120fb4f319deb2bf1ca679e6b7cae211e7561375 (diff) | |
| download | rockbox-774fd19c37f02654ea690f8e4e91ec09bde30789.zip rockbox-774fd19c37f02654ea690f8e4e91ec09bde30789.tar.gz rockbox-774fd19c37f02654ea690f8e4e91ec09bde30789.tar.bz2 rockbox-774fd19c37f02654ea690f8e4e91ec09bde30789.tar.xz | |
Checking for total free buffer space isn't correct. What we need to check is the space available for the particular handle we want to rebuffer.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15821 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/buffering.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/apps/buffering.c b/apps/buffering.c index 624debc..f0a50c2 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -706,10 +706,11 @@ static void rebuffer_handle(int handle_id, size_t newpos) LOGFQUEUE("buffering >| Q_RESET_HANDLE"); queue_send(&buffering_queue, Q_RESET_HANDLE, handle_id); - /* There isn't enough space to rebuffer all of the track from its new - offset, so we ask the user to free some */ - if (buffer_len - BUF_USED < h->filesize - newpos) + size_t next = (unsigned)((void *)h->next - (void *)buffer); + if (next - h->data < h->filesize - newpos) { + /* There isn't enough space to rebuffer all of the track from its new + offset, so we ask the user to free some */ DEBUGF("rebuffer_handle: space is needed\n"); call_buffering_callbacks(EVENT_HANDLE_REBUFFER, handle_id); } |