diff options
-rw-r--r-- | src/modules/module-raop-sink.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c index 79c517aa..e17198cd 100644 --- a/src/modules/module-raop-sink.c +++ b/src/modules/module-raop-sink.c @@ -216,17 +216,19 @@ static void thread_func(void *userdata) { ssize_t l; void *p; - if (u->raw_memchunk.length <= 0) { - if (u->raw_memchunk.memblock) - pa_memblock_unref(u->raw_memchunk.memblock); - pa_memchunk_reset(&u->raw_memchunk); - - /* Grab unencoded data */ - pa_sink_render(u->sink, u->block_size, &u->raw_memchunk); - } - pa_assert(u->raw_memchunk.length > 0); - if (u->encoded_memchunk.length <= 0) { + if (u->raw_memchunk.length <= 0) { + if (u->raw_memchunk.memblock) + pa_memblock_unref(u->raw_memchunk.memblock); + pa_memchunk_reset(&u->raw_memchunk); + + /* Grab unencoded data */ + pa_sink_render(u->sink, u->block_size, &u->raw_memchunk); + p = pa_memblock_acquire(u->raw_memchunk.memblock); + pa_memblock_release(u->raw_memchunk.memblock); + } + pa_assert(u->raw_memchunk.length > 0); + /* Encode it */ size_t rl = u->raw_memchunk.length; u->encoding_overhead += u->next_encoding_overhead; |