diff options
author | Lennart Poettering <lennart@poettering.net> | 2008-05-02 01:20:46 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2008-05-02 01:20:46 +0000 |
commit | 49b1b15ef076e36aa7dc62eb664f848b6a5ca531 (patch) | |
tree | acf5d550bb071f06cf65bbfcc4e8009bd351e1fe | |
parent | 52e3628c3edd98ae3402605e7f44a0fc4545dd0a (diff) |
don't enable prebuffering if we just call is_readable()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2341 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r-- | src/pulsecore/memblockq.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/pulsecore/memblockq.c b/src/pulsecore/memblockq.c index 947c69a2..13eb1101 100644 --- a/src/pulsecore/memblockq.c +++ b/src/pulsecore/memblockq.c @@ -428,6 +428,15 @@ finish: pa_bool_t pa_memblockq_prebuf_active(pa_memblockq *bq) { pa_assert(bq); + if (bq->in_prebuf) + return pa_memblockq_get_length(bq) < bq->prebuf; + else + return bq->prebuf > 0 && bq->read_index >= bq->write_index; +} + +static pa_bool_t update_prebuf(pa_memblockq *bq) { + pa_assert(bq); + if (bq->in_prebuf) { if (pa_memblockq_get_length(bq) < bq->prebuf) @@ -452,7 +461,7 @@ int pa_memblockq_peek(pa_memblockq* bq, pa_memchunk *chunk) { pa_assert(chunk); /* We need to pre-buffer */ - if (pa_memblockq_prebuf_active(bq)) + if (update_prebuf(bq)) return -1; fix_current_read(bq); @@ -515,7 +524,7 @@ void pa_memblockq_drop(pa_memblockq *bq, size_t length) { while (length > 0) { /* Do not drop any data when we are in prebuffering mode */ - if (pa_memblockq_prebuf_active(bq)) + if (update_prebuf(bq)) break; fix_current_read(bq); |