summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <waker@users.sourceforge.net>2014-07-29 22:08:06 +0200
committerGravatar Alexey Yakovenko <waker@users.sourceforge.net>2014-07-29 22:08:06 +0200
commitefb0a36ae96456b3d66dd34cf4ad136c59dc1f85 (patch)
tree5f59fec14710bc1b11ceb232c50d48bb557ecfe1
parent0d902e166aee102e90cad29c85003d5dcb2834b0 (diff)
added even smarter streamer sleep logic
-rw-r--r--streamer.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/streamer.c b/streamer.c
index 5f8ac4eb..3642386f 100644
--- a/streamer.c
+++ b/streamer.c
@@ -1873,9 +1873,14 @@ streamer_thread (void *ctx) {
// add 1ms here to compensate the rounding error
// and another 1ms to buffer slightly faster then playing
alloc_time -= ms+2;
- if (streamer_buffering || streamer_ringbuf.remaining < STREAM_BUFFER_SIZE / 2) {
+ if (streamer_buffering) {
alloc_time = 0;
}
+ else if (streamer_ringbuf.remaining < STREAM_BUFFER_SIZE / 2) {
+ alloc_time >>= 2; // speed-up loading a little
+ }
+
+ //printf ("sleep: %d, buffering: %d, buffer_starving: %d (%d/%d)\n", alloc_time, streamer_buffering, streamer_ringbuf.remaining < STREAM_BUFFER_SIZE / 2, streamer_ringbuf.remaining, STREAM_BUFFER_SIZE / 2);
if (alloc_time > 0) {
usleep (alloc_time * 1000);