[pulseaudio-discuss] Tracking lifetime of pa_context objects from API level

Marcel Müller mueller at maazl.de
Mon Dec 27 06:09:32 PST 2010

I am seeking for an option to track the lifetime of pa_context objects. 
Unfortunately there in no callback when the reference counter reaches 
zero. It will only call pa_context free which is not visible to API users.

In fact, I am writing a C++ wrapper to the asynchronous API. And I want 
to start the (threaded) mainloop automatically. So the user need not to 
care about the mainloop at all. Well nothing special so far.

But also I have to stop the main loop when it is no longer needed. This 
is not trivial, because the pa_context might only be referenced 
internally by other PA objects. So an instance counter of the C++ 
context wrappers is not sufficient, because they might have gone out of 
scope while the mainloop is still needed for processing.

However, if I could track the total number of existing pa_context 
objects, I could safely stop the main loop after the last pa_context 
died. Without any pa_context object it is most likely no longer needed.

The only available observable is the stat callback. But tracking changes 
to PA_CONTEXT_FAILED and PA_CONTEXT_TERMINATED is not sufficient. First 
of all a context might not have been used at all, Secondly a terminated 
connection might become connected later.

Any ideas how to terminate the mainloop?

Running the mainloop thread infinitely might have impact on the 
application termination behavior. Especially, because i am talking about 
a plug-in with a private (mainloop) thread, which the application itself 
does not even know.


More information about the pulseaudio-discuss mailing list