diff options
Diffstat (limited to 'polyp/memblockq.c')
-rw-r--r-- | polyp/memblockq.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/polyp/memblockq.c b/polyp/memblockq.c index ff16f627..16c0da8e 100644 --- a/polyp/memblockq.c +++ b/polyp/memblockq.c @@ -68,18 +68,21 @@ struct pa_memblockq* pa_memblockq_new(size_t maxlength, size_t tlength, size_t b bq->tlength = ((tlength+base-1)/base)*base; if (!bq->tlength || bq->tlength >= bq->maxlength) bq->tlength = bq->maxlength; + + bq->minreq = (minreq/base)*base; + if (bq->minreq == 0) + bq->minreq = 1; bq->prebuf = (prebuf == (size_t) -1) ? bq->maxlength/2 : prebuf; bq->prebuf = (bq->prebuf/base)*base; if (bq->prebuf > bq->maxlength) bq->prebuf = bq->maxlength; + if (bq->prebuf > bq->tlength - bq->minreq) + bq->prebuf = bq->tlength - bq->minreq; + bq->orig_prebuf = bq->prebuf; - bq->minreq = (minreq/base)*base; - if (bq->minreq == 0) - bq->minreq = 1; - pa_log(__FILE__": memblockq sanitized: maxlength=%u, tlength=%u, base=%u, prebuf=%u, minreq=%u\n", bq->maxlength, bq->tlength, bq->base, bq->prebuf, bq->minreq); bq->mcalign = NULL; |