summaryrefslogtreecommitdiffstats
path: root/src/modules/module-raop-sink.c
diff options
context:
space:
mode:
authorColin Guthrie <pulse@colin.guthr.ie>2008-05-26 21:04:45 +0000
committerColin Guthrie <pulse@colin.guthr.ie>2008-10-08 20:32:08 +0100
commit6c1dd6e54b4b5b4213467d156abc9f260c63aaa3 (patch)
tree498ef5514fe5ebba26a125b63d8c4003d8825dd4 /src/modules/module-raop-sink.c
parent3767cdb6d16c5817eb489129585fb353e3ad6afa (diff)
Move the encoding loop around a bit such that it does not grab the data and keep it for the next loop iteration.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2481 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/modules/module-raop-sink.c')
-rw-r--r--src/modules/module-raop-sink.c22
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;