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;  | 
