PulseAudio
16.0
|
The application can be notified, asynchronously, whenever the internal layout of the server changes. Possible notifications are described in the pa_subscription_event_type and pa_subscription_mask enumerations.
The application sets the notification mask using pa_context_subscribe() and the function that will be called whenever a notification occurs using pa_context_set_subscribe_callback().
The callback will be called with a pa_subscription_event_type_t representing the event that caused the callback. Clients can examine what object changed using PA_SUBSCRIPTION_EVENT_FACILITY_MASK. The actual event type can then be extracted with PA_SUBSCRIPTION_EVENT_TYPE_MASK. Please note that the masked values are integers, not flags (so you will check the object/event type using a comparison not a binary AND). For example, the callback might look something like:
void my_subscription_callback(pa_context *c, pa_subscription_event_type_t t, uint32_t idx, void *userdata) { if ((t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) == PA_SUBSCRIPTION_EVENT_SOURCE) { if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_NEW) { ... a source was added, let's do stuff! ... } } }