summaryrefslogtreecommitdiffstats
path: root/polyp/memblockq.c
diff options
context:
space:
mode:
Diffstat (limited to 'polyp/memblockq.c')
-rw-r--r--polyp/memblockq.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/polyp/memblockq.c b/polyp/memblockq.c
index 59794d6c..0e71fa8c 100644
--- a/polyp/memblockq.c
+++ b/polyp/memblockq.c
@@ -42,7 +42,7 @@ struct memblock_list {
struct pa_memblockq {
struct memblock_list *blocks, *blocks_tail;
unsigned n_blocks;
- size_t current_length, maxlength, tlength, base, prebuf, minreq;
+ size_t current_length, maxlength, tlength, base, prebuf, orig_prebuf, minreq;
struct pa_mcalign *mcalign;
struct pa_memblock_stat *memblock_stat;
};
@@ -72,6 +72,8 @@ struct pa_memblockq* pa_memblockq_new(size_t maxlength, size_t tlength, size_t b
bq->prebuf = (bq->prebuf/base)*base;
if (bq->prebuf > bq->maxlength)
bq->prebuf = bq->maxlength;
+
+ bq->orig_prebuf = bq->prebuf;
bq->minreq = (minreq/base)*base;
if (bq->minreq == 0)
@@ -285,6 +287,11 @@ void pa_memblockq_prebuf_disable(struct pa_memblockq *bq) {
bq->prebuf = 0;
}
+void pa_memblockq_prebuf_reenable(struct pa_memblockq *bq) {
+ assert(bq);
+ bq->prebuf = bq->orig_prebuf;
+}
+
void pa_memblockq_seek(struct pa_memblockq *bq, size_t length) {
assert(bq);