]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/thread-mq.h
remap: Change remapping function argument type from void to int16_t / float as approp...
[pulseaudio] / src / pulsecore / thread-mq.h
index 0ae49f8cf674f687309ca1cfef7afac9d48139a9..79af364146f729677dbbd6fbf0d6f48be9dd53be 100644 (file)
@@ -1,8 +1,6 @@
 #ifndef foopulsethreadmqhfoo
 #define foopulsethreadmqhfoo
 
-/* $Id$ */
-
 /***
   This file is part of PulseAudio.
 
 #include <pulsecore/rtpoll.h>
 
 /* Two way communication between a thread and a mainloop. Before the
- * thread is started a pa_pthread_mq should be initialized and than
+ * thread is started a pa_thread_mq should be initialized and than
  * attached to the thread using pa_thread_mq_install(). */
 
 typedef struct pa_thread_mq {
-    pa_mainloop_api *mainloop;
+    pa_mainloop_api *main_mainloop;
+    pa_mainloop_api *thread_mainloop;
     pa_asyncmsgq *inq, *outq;
-    pa_io_event *read_event, *write_event;
+    pa_io_event *read_main_event, *write_main_event;
+    pa_io_event *read_thread_event, *write_thread_event;
 } pa_thread_mq;
 
 void pa_thread_mq_init(pa_thread_mq *q, pa_mainloop_api *mainloop, pa_rtpoll *rtpoll);
+void pa_thread_mq_init_thread_mainloop(pa_thread_mq *q, pa_mainloop_api *main_mainloop, pa_mainloop_api *thread_mainloop);
 void pa_thread_mq_done(pa_thread_mq *q);
 
 /* Install the specified pa_thread_mq object for the current thread */
@@ -47,4 +48,12 @@ void pa_thread_mq_install(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);
 
+/* Verify that we are in control context (aka 'main context'). */
+#define pa_assert_ctl_context(s) \
+    pa_assert(!pa_thread_mq_get())
+
+/* Verify that we are in IO context (aka 'thread context'). */
+#define pa_assert_io_context(s) \
+    pa_assert(pa_thread_mq_get())
+
 #endif