diff --git a/src/pulsecore/asyncmsgq.c b/src/pulsecore/asyncmsgq.c index b0804f79f..c211d9b0d 100644 --- a/src/pulsecore/asyncmsgq.c +++ b/src/pulsecore/asyncmsgq.c @@ -321,7 +321,7 @@ void pa_asyncmsgq_write_after_poll(pa_asyncmsgq *a) { int pa_asyncmsgq_dispatch(pa_msgobject *object, int code, void *userdata, int64_t offset, pa_memchunk *memchunk) { if (object) - return object->process_msg(object, code, userdata, offset, memchunk); + return object->process_msg(object, code, userdata, offset, pa_memchunk_isset(memchunk) ? memchunk : NULL); return 0; } diff --git a/src/pulsecore/memchunk.c b/src/pulsecore/memchunk.c index 0bbf8590b..34317fe5a 100644 --- a/src/pulsecore/memchunk.c +++ b/src/pulsecore/memchunk.c @@ -110,3 +110,12 @@ pa_memchunk* pa_memchunk_memcpy(pa_memchunk *dst, pa_memchunk *src) { return dst; } + +pa_bool_t pa_memchunk_isset(pa_memchunk *chunk) { + assert(chunk); + + return + chunk->memblock || + chunk->index > 0 || + chunk->length > 0; +} diff --git a/src/pulsecore/memchunk.h b/src/pulsecore/memchunk.h index 9458f4ff9..d7d82400b 100644 --- a/src/pulsecore/memchunk.h +++ b/src/pulsecore/memchunk.h @@ -50,4 +50,7 @@ pa_memchunk *pa_memchunk_will_need(const pa_memchunk *c); /* Copy the data in the src memchunk to the dst memchunk */ pa_memchunk* pa_memchunk_memcpy(pa_memchunk *dst, pa_memchunk *src); +/* Return TRUE if any field is set != 0 */ +pa_bool_t pa_memchunk_isset(pa_memchunk *c); + #endif