]> code.delx.au - pulseaudio/commitdiff
move queue processing code into pa_thread_mq
authorLennart Poettering <lennart@poettering.net>
Thu, 30 Aug 2007 22:42:47 +0000 (22:42 +0000)
committerLennart Poettering <lennart@poettering.net>
Thu, 30 Aug 2007 22:42:47 +0000 (22:42 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1730 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/pulsecore/thread-mq.c
src/pulsecore/thread-mq.h

index 513409d465fea6a83de28b2e67643292b22978d6..3c466ceb22f6e3408cd801bdae4ae2b5f8148583 100644 (file)
@@ -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;
+}
index 13b6e01f4b1f8bb41848cbdada061e371b2aae07..2b1fd687b038e132fd67cad8f9cc60fa8a31a8a8 100644 (file)
@@ -43,6 +43,9 @@ void pa_thread_mq_done(pa_thread_mq *q);
 /* Install the specified pa_thread_mq object for the current thread */
 void pa_thread_mq_install(pa_thread_mq *q);
 
+/* Dispatched queued events on the thread side. */
+int pa_thread_mq_process(pa_thread_mq *q);
+
 /* Return the pa_thread_mq object that is set for the current thread */
 pa_thread_mq *pa_thread_mq_get(void);