]> code.delx.au - pulseaudio/commitdiff
mainloop: Document need for mainloop lock around pa_mainloop_api_once
authorArun Raghavan <arun.raghavan@collabora.co.uk>
Mon, 17 Jun 2013 12:37:42 +0000 (18:07 +0530)
committerArun Raghavan <arun.raghavan@collabora.co.uk>
Tue, 18 Jun 2013 02:50:05 +0000 (08:20 +0530)
This needs us to expose a bit of implementation detail, but this seems
to be the cleanest way without an API change.

The specific problem is that pa_mainloop_api_once() needs to first
create a defer event and then set its destroy callback. If the defer
event is completed before the callback is set, an assert will be
trigerred.

src/pulse/mainloop-api.h

index 018ae19b81bc2bd6596b15f3810335811dbd024f..e75496097d2ff403324ef5ce1e41e2e90eec3106 100644 (file)
@@ -114,7 +114,9 @@ struct pa_mainloop_api {
     void (*quit)(pa_mainloop_api*a, int retval);
 };
 
-/** Run the specified callback function once from the main loop using an anonymous defer event. */
+/** Run the specified callback function once from the main loop using an anonymous defer event. Note that this performs
+ * multiple mainloop operations non-atomically. If, for example, you are using a \pa_threaded_mainloop, you will need to
+ * take the mainloop lock before this call. */
 void pa_mainloop_api_once(pa_mainloop_api*m, void (*callback)(pa_mainloop_api*m, void *userdata), void *userdata);
 
 PA_C_DECL_END