On Wed, 2013-02-20 at 16:57 -0800, Tong Wu wrote: > Hi Tanu, > > Also which thread does all of the hooks (PA_COE_HOOK_SINK_INPUT_PUT, > and so on) run in? The PA_CORE_HOOK_* hooks are always run from the main thread. > My understanding is that within the PA daemon process, PA daemon has a > mainloop (which is a thread), and IO threads within the sinks or > sources. Are there threads corresponding to each of the client > applications (paplayer and so on)? There are no separate threads for clients. > I see that for instance in function apply_cork_to_sink() in > module-role-cork.c, there is a loop over all sink_inputs of a sink via > idxset. What about a sink_input disappears during that loop? > Is apply_cork_to_sink() running in the PA daemon's mainloop? And all > sink_input's come and go only happen in the PA daemon's mainloop as > well? Yes, module-role-cork operates solely in the main thread, and it should not touch anything that can be changed from other threads. Sink inputs can only be removed from the main thread. -- Tanu