diff options
Diffstat (limited to 'src/pulsecore/thread-mq.c')
-rw-r--r-- | src/pulsecore/thread-mq.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/pulsecore/thread-mq.c b/src/pulsecore/thread-mq.c index 513409d4..3c466ceb 100644 --- a/src/pulsecore/thread-mq.c +++ b/src/pulsecore/thread-mq.c @@ -117,3 +117,27 @@ pa_thread_mq *pa_thread_mq_get(void) { return pa_tls_get(tls); } +int pa_thread_mq_process(pa_thread_mq *q) { + pa_msgobject *object; + int code; + void *data; + pa_memchunk chunk; + int64_t offset; + + pa_assert(q); + + if (pa_asyncmsgq_get(q->inq, &object, &code, &data, &offset, &chunk, 0) == 0) { + int ret; + + if (!object && code == PA_MESSAGE_SHUTDOWN) { + pa_asyncmsgq_done(q->inq, 0); + return -1; + } + + ret = pa_asyncmsgq_dispatch(object, code, data, offset, &chunk); + pa_asyncmsgq_done(q->inq, ret); + return 1; + } + + return 0; +} |