summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-05-02 01:20:46 +0000
committerLennart Poettering <lennart@poettering.net>2008-05-02 01:20:46 +0000
commit49b1b15ef076e36aa7dc62eb664f848b6a5ca531 (patch)
treeacf5d550bb071f06cf65bbfcc4e8009bd351e1fe
parent52e3628c3edd98ae3402605e7f44a0fc4545dd0a (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.c13
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);