Hi Maarten, This one is a bit more in-depth, so would like to get the opinions from some of the Bluetooth guru on these changes before pushing. I've CC'ed some likely candidates for further comment. Cheers Col 'Twas brillig, and Maarten Lankhorst at 10/12/10 23:05 did gyre and gimble: > makes my android phone slightly happier > --- > src/modules/bluetooth/module-bluetooth-device.c | 11 ++++++++--- > 1 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c > index 6d31c1e..8664001 100644 > --- a/src/modules/bluetooth/module-bluetooth-device.c > +++ b/src/modules/bluetooth/module-bluetooth-device.c > @@ -1387,7 +1387,7 @@ static int a2dp_process_push(struct userdata *u) { > pa_assert(u->source); > pa_assert(u->read_smoother); > > - memchunk.memblock = pa_memblock_new(u->core->mempool, u->block_size); > + memchunk.memblock = pa_memblock_new(u->core->mempool, u->block_size * 2); > memchunk.index = memchunk.length = 0; > > for (;;) { > @@ -1442,7 +1442,8 @@ static int a2dp_process_push(struct userdata *u) { > to_decode = l - sizeof(*header) - sizeof(*payload); > > d = pa_memblock_acquire(memchunk.memblock); > - to_write = memchunk.length = pa_memblock_get_length(memchunk.memblock); > + to_write = pa_memblock_get_length(memchunk.memblock); > + memchunk.length = 0; > > while (PA_LIKELY(to_decode > 0 && to_write > 0)) { > size_t written; > @@ -1464,7 +1465,7 @@ static int a2dp_process_push(struct userdata *u) { > /* pa_log_debug("SBC: frame_length: %lu; codesize: %lu", (unsigned long) a2dp->frame_length, (unsigned long) a2dp->codesize); */ > > pa_assert_fp((size_t) decoded <= to_decode); > - pa_assert_fp((size_t) decoded == a2dp->frame_length); > + pa_assert_fp((size_t) decoded <= a2dp->frame_length); > > pa_assert_fp((size_t) written <= to_write); > pa_assert_fp((size_t) written == a2dp->codesize); > @@ -1474,10 +1475,14 @@ static int a2dp_process_push(struct userdata *u) { > > d = (uint8_t*) d + written; > to_write -= written; > + memchunk.length += written; > > frame_count++; > } > > + if (to_decode) > + pa_log_error("SBC: %lu bytes not decoded\n", to_decode); > + > pa_memblock_release(memchunk.memblock); > > pa_source_post(u->source, &memchunk); -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mageia Contributor [http://www.mageia.org/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/]