summaryrefslogtreecommitdiffstats
path: root/src/pulse/context.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-02-18 21:55:55 +0100
committerLennart Poettering <lennart@poettering.net>2009-02-18 21:55:55 +0100
commitbe81a681ac84ac56208c3bb315e04d04c2e53606 (patch)
treeda5dfb6741f910b0b846638754f6391b29fd29b8 /src/pulse/context.c
parent1737a19c86d34d1a3721d019f649beaa9aea02b3 (diff)
if we fail to import a memblock fill in silence to guarantee stability of timing
Diffstat (limited to 'src/pulse/context.c')
-rw-r--r--src/pulse/context.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 8686e0de..d8d0a51d 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -335,8 +335,7 @@ static void pstream_memblock_callback(pa_pstream *p, uint32_t channel, int64_t o
pa_assert(p);
pa_assert(chunk);
- pa_assert(chunk->memblock);
- pa_assert(chunk->length);
+ pa_assert(chunk->length > 0);
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
@@ -344,11 +343,11 @@ static void pstream_memblock_callback(pa_pstream *p, uint32_t channel, int64_t o
if ((s = pa_dynarray_get(c->record_streams, channel))) {
- pa_assert(seek == PA_SEEK_RELATIVE);
- pa_assert(offset == 0);
-
- pa_memblockq_seek(s->record_memblockq, offset, seek);
- pa_memblockq_push_align(s->record_memblockq, chunk);
+ if (chunk->memblock) {
+ pa_memblockq_seek(s->record_memblockq, offset, seek);
+ pa_memblockq_push_align(s->record_memblockq, chunk);
+ } else
+ pa_memblockq_seek(s->record_memblockq, offset+chunk->length, seek);
if (s->read_callback) {
size_t l;