thread-mainloop: Fix bug in example code

Checking the operation state caused a deadlock, because the state
won't change before my_drain_callback() returns, and it doesn't
return before my_drain_stream_func() calls
pa_threaded_mainloop_accept().
This commit is contained in:
Mitchell Fang 2013-05-22 11:23:27 +03:00 committed by Arun Raghavan
parent 9c11749258
commit 2dcf052e13

View file

@ -166,7 +166,7 @@ PA_C_DECL_BEGIN
* access this data safely, we must extend our example a bit: * access this data safely, we must extend our example a bit:
* *
* \code * \code
* static int *drain_result; * static volatile int *drain_result = NULL;
* *
* static void my_drain_callback(pa_stream*s, int success, void *userdata) { * static void my_drain_callback(pa_stream*s, int success, void *userdata) {
* pa_threaded_mainloop *m; * pa_threaded_mainloop *m;
@ -187,7 +187,7 @@ PA_C_DECL_BEGIN
* o = pa_stream_drain(s, my_drain_callback, m); * o = pa_stream_drain(s, my_drain_callback, m);
* assert(o); * assert(o);
* *
* while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) * while (drain_result == NULL)
* pa_threaded_mainloop_wait(m); * pa_threaded_mainloop_wait(m);
* *
* pa_operation_unref(o); * pa_operation_unref(o);