diff options
| author | Brandon Low <lostlogic@rockbox.org> | 2007-11-03 03:46:22 +0000 |
|---|---|---|
| committer | Brandon Low <lostlogic@rockbox.org> | 2007-11-03 03:46:22 +0000 |
| commit | dc58c3d92e88bd1be3b73b2887c8856687d5002f (patch) | |
| tree | 664f0fe7efce5b1406977467196a9afb9d0c4513 | |
| parent | 8b8785b541d0630c65cb399ad66be2d2b072b277 (diff) | |
| download | rockbox-dc58c3d92e88bd1be3b73b2887c8856687d5002f.zip rockbox-dc58c3d92e88bd1be3b73b2887c8856687d5002f.tar.gz rockbox-dc58c3d92e88bd1be3b73b2887c8856687d5002f.tar.bz2 rockbox-dc58c3d92e88bd1be3b73b2887c8856687d5002f.tar.xz | |
Give lowmem targets or targets with broken ATA implementations more buffering opportunities. Fix part of hcs' long standing SPC bug by filling if the useful data is equal to the watermark as well as less than
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15417 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/buffering.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/apps/buffering.c b/apps/buffering.c index 31db7f6..d6dc84c 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -1226,7 +1226,7 @@ void buffering_thread(void) update_data_counters(); /* If the buffer is low, call the callbacks to get new data */ - if (num_handles > 0 && data_counters.useful < conf_watermark) + if (num_handles > 0 && data_counters.useful <= conf_watermark) { call_buffer_low_callbacks(); } @@ -1237,23 +1237,24 @@ void buffering_thread(void) queue_empty(&buffering_queue)) { if (data_counters.remaining > 0 && - data_counters.buffered < high_watermark) + data_counters.buffered <= high_watermark) { fill_buffer(); update_data_counters(); } - if (num_handles > 0 && data_counters.useful < high_watermark) + if (num_handles > 0 && data_counters.useful <= high_watermark) { call_buffer_low_callbacks(); } } #endif - if (ev.id == SYS_TIMEOUT && queue_empty(&buffering_queue)) + if ((ev.id == SYS_TIMEOUT || ev.id == Q_BUFFER_HANDLE) && + queue_empty(&buffering_queue)) { if (data_counters.remaining > 0 && - data_counters.useful < conf_watermark) + data_counters.useful <= conf_watermark) { /* Recursively shrink the buffer, depth first */ shrink_buffer(first_handle); |