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

Marcel mm0pointer at maazl.de
Mon Dec 27 06:28:22 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.


Marcel




More information about the pulseaudio-discuss mailing list