summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorBrandon Low <lostlogic@rockbox.org>2007-11-05 17:50:51 +0000
committerBrandon Low <lostlogic@rockbox.org>2007-11-05 17:50:51 +0000
commit76f9bfa9455f14d58f559158c1e343dfe7e5e0ac (patch)
tree5899bde2b5b68d5909b0cc2104e52f330e09f354 /apps
parent3379440a4bfecef85c915fb079b595f98a6db1de (diff)
downloadrockbox-76f9bfa9455f14d58f559158c1e343dfe7e5e0ac.tar.gz
rockbox-76f9bfa9455f14d58f559158c1e343dfe7e5e0ac.zip
When seeking foward off of the buffer, if it is a short seek don't rebuffer the whole track, just read enough to satisfy
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15479 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/buffering.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/apps/buffering.c b/apps/buffering.c
index 651ec4c2ff..5a67f25038 100644
--- a/apps/buffering.c
+++ b/apps/buffering.c
@@ -650,6 +650,14 @@ static void rebuffer_handle(int handle_id, size_t newpos)
if (!h)
return;
+ if (newpos > h->offset && newpos - h->offset < BUFFERING_DEFAULT_FILECHUNK)
+ {
+ LOGFQUEUE("buffering >| Q_BUFFER_HANDLE");
+ queue_send(&buffering_queue, Q_BUFFER_HANDLE, handle_id);
+ h->ridx = h->data + newpos;
+ return;
+ }
+
h->offset = newpos;
LOGFQUEUE("buffering >| Q_RESET_HANDLE");