void pa__done(pa_module*m) { struct userdata* u; pa_assert(m); if (!(u = m->userdata)) return; if (u->subscription) pa_subscription_free(u->subscription); if (u->sink_input_new_hook_slot) pa_hook_slot_free(u->sink_input_new_hook_slot); if (u->sink_input_fixate_hook_slot) pa_hook_slot_free(u->sink_input_fixate_hook_slot); if (u->source_output_new_hook_slot) pa_hook_slot_free(u->source_output_new_hook_slot); if (u->hashmap) { save_rules(u); pa_hashmap_free(u->hashmap, free_func, NULL); } if (u->save_time_event) u->core->mainloop->time_free(u->save_time_event); pa_xfree(u->table_file); pa_xfree(u); }
void pa__done(pa_module*m) { struct userdata* u; pa_assert(m); if (!(u = m->userdata)) return; if (u->subscription) pa_subscription_free(u->subscription); if (u->sink_fixate_hook_slot) pa_hook_slot_free(u->sink_fixate_hook_slot); if (u->source_fixate_hook_slot) pa_hook_slot_free(u->source_fixate_hook_slot); if (u->sink_new_hook_slot) pa_hook_slot_free(u->sink_new_hook_slot); if (u->source_new_hook_slot) pa_hook_slot_free(u->source_new_hook_slot); if (u->save_time_event) u->core->mainloop->time_free(u->save_time_event); if (u->database) pa_database_close(u->database); pa_xfree(u); }
void pa_sink_input_ext_subscription_free(struct pa_sinp_evsubscr *subscr) { if (subscr != NULL) { pa_hook_slot_free(subscr->neew); pa_hook_slot_free(subscr->fixate); pa_hook_slot_free(subscr->put); pa_hook_slot_free(subscr->unlink); pa_xfree(subscr); } }
void pa__done(pa_module*m) { struct userdata *u; pa_assert(m); if (!(u = m->userdata)) return; if (u->put_slot) pa_hook_slot_free(u->put_slot); if (u->unlink_slot) pa_hook_slot_free(u->unlink_slot); if (u->null_module != PA_INVALID_INDEX && m->core->state != PA_CORE_SHUTDOWN) pa_module_unload_request_by_index(m->core, u->null_module, TRUE); pa_xfree(u->sink_name); pa_xfree(u); }
void pa__done(pa_module *m) { struct userdata* u; pa_assert(m); if (!(u = m->userdata)) return; if (u->client_new_slot) pa_hook_slot_free(u->client_new_slot); if (u->client_proplist_changed_slot) pa_hook_slot_free(u->client_proplist_changed_slot); if (u->cache) pa_hashmap_free(u->cache); pa_xfree(u); }
void pa__done(pa_module *m) { struct userdata* u; pa_assert(m); if (!(u = m->userdata)) return; if (u->sink_input_put_slot) pa_hook_slot_free(u->sink_input_put_slot); if (u->sink_input_move_finish_slot) pa_hook_slot_free(u->sink_input_move_finish_slot); if (u->source_output_put_slot) pa_hook_slot_free(u->source_output_put_slot); if (u->source_output_move_finish_slot) pa_hook_slot_free(u->source_output_move_finish_slot); pa_xfree(u); }
void pa__done(pa_module*m) { struct userdata*u; pa_assert(m); if (!(u = m->userdata)) return; unpublish_all_services(u); if (u->services) pa_hashmap_free(u->services); if (u->sink_new_slot) pa_hook_slot_free(u->sink_new_slot); if (u->source_new_slot) pa_hook_slot_free(u->source_new_slot); if (u->sink_changed_slot) pa_hook_slot_free(u->sink_changed_slot); if (u->source_changed_slot) pa_hook_slot_free(u->source_changed_slot); if (u->sink_unlink_slot) pa_hook_slot_free(u->sink_unlink_slot); if (u->source_unlink_slot) pa_hook_slot_free(u->source_unlink_slot); if (u->native) pa_native_protocol_unref(u->native); pa_xfree(u->service_name); pa_xfree(u); }
void pa__done(pa_module*m) { struct userdata* u; pa_assert(m); if (!(u = m->userdata)) return; if (u->sink_input_fixate_hook_slot) pa_hook_slot_free(u->sink_input_fixate_hook_slot); pa_xfree(u); }
static void disable_activity(struct userdata *u, struct pa_policy_activity_variable *var) { pa_assert(u); pa_assert(var); if (!var->sink_state_changed_hook_slot) return; var->sink_opened = -1; pa_log_debug("disabling activity for %s", var->device); apply_activity(u, var); pa_hook_slot_free(var->sink_state_changed_hook_slot); var->sink_state_changed_hook_slot = NULL; }
void pa__done(pa_module *m) { struct userdata* u; pa_assert(m); if (!(u = m->userdata)) return; if (u->sink_input_put_slot) pa_hook_slot_free(u->sink_input_put_slot); if (u->sink_input_unlink_slot) pa_hook_slot_free(u->sink_input_unlink_slot); if (u->sink_input_move_start_slot) pa_hook_slot_free(u->sink_input_move_start_slot); if (u->sink_input_move_finish_slot) pa_hook_slot_free(u->sink_input_move_finish_slot); if (u->cork_state) pa_hashmap_free(u->cork_state, NULL, NULL); pa_xfree(u); }
void pa__done(pa_module *m) { struct userdata* u; pa_assert(m); if (!(u = m->userdata)) return; if (u->client_new_slot) pa_hook_slot_free(u->client_new_slot); if (u->client_proplist_changed_slot) pa_hook_slot_free(u->client_proplist_changed_slot); if (u->cache) { struct rule *r; while ((r = pa_hashmap_steal_first(u->cache))) rule_free(r); pa_hashmap_free(u->cache, NULL, NULL); } pa_xfree(u); }
void pa__done(pa_module*m) { struct userdata*u; pa_assert(m); if (!(u = m->userdata)) return; if (u->x11_client) pa_x11_client_free(u->x11_client); if (u->x11_wrapper) { char t[256]; int screen = DefaultScreen(pa_x11_wrapper_get_display(u->x11_wrapper)); /* Yes, here is a race condition */ if (!pa_x11_get_prop(pa_x11_wrapper_get_xcb_connection(u->x11_wrapper), screen, "PULSE_ID", t, sizeof(t)) || !pa_streq(t, u->id)) pa_log_warn("PulseAudio information vanished from X11!"); else { pa_x11_del_prop(pa_x11_wrapper_get_xcb_connection(u->x11_wrapper), screen, "PULSE_ID"); pa_x11_del_prop(pa_x11_wrapper_get_xcb_connection(u->x11_wrapper), screen, "PULSE_SERVER"); pa_x11_del_prop(pa_x11_wrapper_get_xcb_connection(u->x11_wrapper), screen, "PULSE_SINK"); pa_x11_del_prop(pa_x11_wrapper_get_xcb_connection(u->x11_wrapper), screen, "PULSE_SOURCE"); pa_x11_del_prop(pa_x11_wrapper_get_xcb_connection(u->x11_wrapper), screen, "PULSE_COOKIE"); pa_x11_del_prop(pa_x11_wrapper_get_xcb_connection(u->x11_wrapper), screen, "PULSE_SESSION_ID"); xcb_flush(pa_x11_wrapper_get_xcb_connection(u->x11_wrapper)); } pa_x11_wrapper_unref(u->x11_wrapper); } if (u->auth_cookie) pa_auth_cookie_unref(u->auth_cookie); if (u->hook_slot) pa_hook_slot_free(u->hook_slot); if (u->protocol) pa_native_protocol_unref(u->protocol); pa_xfree(u->id); pa_xfree(u); }
void pa__done(pa_module*m) { struct userdata*u; pa_assert(m); if (!(u = m->userdata)) return; if (u->x11_client) pa_x11_client_free(u->x11_client); if (u->x11_wrapper) pa_x11_wrapper_unref(u->x11_wrapper); if (u->hook_slot) pa_hook_slot_free(u->hook_slot); pa_xfree(u); }
void pa__done(pa_module*m) { struct userdata*u; pa_assert(m); if (!(u = m->userdata)) return; if (u->services) { struct service *s; while ((s = pa_hashmap_first(u->services))) service_free(s); pa_hashmap_free(u->services, NULL, NULL); } if (u->sink_new_slot) pa_hook_slot_free(u->sink_new_slot); if (u->source_new_slot) pa_hook_slot_free(u->source_new_slot); if (u->sink_changed_slot) pa_hook_slot_free(u->sink_changed_slot); if (u->source_changed_slot) pa_hook_slot_free(u->source_changed_slot); if (u->sink_unlink_slot) pa_hook_slot_free(u->sink_unlink_slot); if (u->source_unlink_slot) pa_hook_slot_free(u->source_unlink_slot); if (u->main_entry_group) avahi_entry_group_free(u->main_entry_group); if (u->client) avahi_client_free(u->client); if (u->avahi_poll) pa_avahi_poll_free(u->avahi_poll); if (u->native) pa_native_protocol_unref(u->native); pa_xfree(u->service_name); pa_xfree(u); }
void pa__done(pa_module*m) { struct userdata *u; pa_assert(m); if (!m->userdata) return; u = m->userdata; if (u->sink_new_slot) pa_hook_slot_free(u->sink_new_slot); if (u->sink_unlink_slot) pa_hook_slot_free(u->sink_unlink_slot); if (u->sink_state_changed_slot) pa_hook_slot_free(u->sink_state_changed_slot); if (u->source_new_slot) pa_hook_slot_free(u->source_new_slot); if (u->source_unlink_slot) pa_hook_slot_free(u->source_unlink_slot); if (u->source_state_changed_slot) pa_hook_slot_free(u->source_state_changed_slot); if (u->sink_input_new_slot) pa_hook_slot_free(u->sink_input_new_slot); if (u->sink_input_unlink_slot) pa_hook_slot_free(u->sink_input_unlink_slot); if (u->sink_input_move_start_slot) pa_hook_slot_free(u->sink_input_move_start_slot); if (u->sink_input_move_finish_slot) pa_hook_slot_free(u->sink_input_move_finish_slot); if (u->sink_input_state_changed_slot) pa_hook_slot_free(u->sink_input_state_changed_slot); if (u->source_output_new_slot) pa_hook_slot_free(u->source_output_new_slot); if (u->source_output_unlink_slot) pa_hook_slot_free(u->source_output_unlink_slot); if (u->source_output_move_start_slot) pa_hook_slot_free(u->source_output_move_start_slot); if (u->source_output_move_finish_slot) pa_hook_slot_free(u->source_output_move_finish_slot); if (u->source_output_state_changed_slot) pa_hook_slot_free(u->source_output_state_changed_slot); pa_hashmap_free(u->device_infos, (pa_free_cb_t) device_info_free); pa_xfree(u); }
/*** Deallocate stuff ***/ void voice_clear_up(struct userdata *u) { pa_assert(u); if (u->mainloop_handler) { u->mainloop_handler->parent.free((pa_object *)u->mainloop_handler); u->mainloop_handler = NULL; } if (u->hw_sink_input) { pa_sink_input_unlink(u->hw_sink_input); pa_sink_input_unref(u->hw_sink_input); u->hw_sink_input = NULL; } if (u->raw_sink) { pa_sink_unlink(u->raw_sink); pa_sink_unref(u->raw_sink); u->raw_sink = NULL; } if (u->dl_memblockq) { pa_memblockq_free(u->dl_memblockq); u->dl_memblockq = NULL; } if (u->voip_sink) { pa_sink_unlink(u->voip_sink); pa_sink_unref(u->voip_sink); u->voip_sink = NULL; } if (u->hw_source_output) { pa_source_output_unlink(u->hw_source_output); pa_source_output_unref(u->hw_source_output); u->hw_source_output = NULL; } if (u->voip_source) { pa_source_unlink(u->voip_source); pa_source_unref(u->voip_source); u->voip_source = NULL; } if (u->raw_source) { pa_source_unlink(u->raw_source); pa_source_unref(u->raw_source); u->raw_source = NULL; } if (u->hw_source_memblockq) { pa_memblockq_free(u->hw_source_memblockq); u->hw_source_memblockq = NULL; } if (u->ul_memblockq) { pa_memblockq_free(u->ul_memblockq); u->ul_memblockq = NULL; } if (u->dl_sideinfo_queue) { pa_queue_free(u->dl_sideinfo_queue, NULL, u); u->dl_sideinfo_queue = NULL; } voice_aep_ear_ref_unload(u); if (u->aep_silence_memchunk.memblock) { pa_memblock_unref(u->aep_silence_memchunk.memblock); pa_memchunk_reset(&u->aep_silence_memchunk); } if (u->sink_temp_buff) { pa_xfree(u->sink_temp_buff); u->sink_temp_buff = NULL; } if (u->sink_subscription) { pa_subscription_free(u->sink_subscription); u->sink_subscription = NULL; } if (u->sink_proplist_changed_slot) { pa_hook_slot_free(u->sink_proplist_changed_slot); u->sink_proplist_changed_slot = NULL; } if (u->source_proplist_changed_slot) { pa_hook_slot_free(u->source_proplist_changed_slot); u->source_proplist_changed_slot = NULL; } voice_convert_free(u); voice_memchunk_pool_unload(u); voice_unload_event_forwarder(u); }
void pa__done(pa_module*m) { struct userdata *u; struct device_info *d; pa_assert(m); if (!m->userdata) return; u = m->userdata; if (u->sink_new_slot) pa_hook_slot_free(u->sink_new_slot); if (u->sink_unlink_slot) pa_hook_slot_free(u->sink_unlink_slot); if (u->sink_state_changed_slot) pa_hook_slot_free(u->sink_state_changed_slot); if (u->source_new_slot) pa_hook_slot_free(u->source_new_slot); if (u->source_unlink_slot) pa_hook_slot_free(u->source_unlink_slot); if (u->source_state_changed_slot) pa_hook_slot_free(u->source_state_changed_slot); if (u->sink_input_new_slot) pa_hook_slot_free(u->sink_input_new_slot); if (u->sink_input_unlink_slot) pa_hook_slot_free(u->sink_input_unlink_slot); if (u->sink_input_move_start_slot) pa_hook_slot_free(u->sink_input_move_start_slot); if (u->sink_input_move_finish_slot) pa_hook_slot_free(u->sink_input_move_finish_slot); if (u->sink_input_state_changed_slot) pa_hook_slot_free(u->sink_input_state_changed_slot); if (u->source_output_new_slot) pa_hook_slot_free(u->source_output_new_slot); if (u->source_output_unlink_slot) pa_hook_slot_free(u->source_output_unlink_slot); if (u->source_output_move_start_slot) pa_hook_slot_free(u->source_output_move_start_slot); if (u->source_output_move_finish_slot) pa_hook_slot_free(u->source_output_move_finish_slot); if (u->source_output_state_changed_slot) pa_hook_slot_free(u->source_output_state_changed_slot); while ((d = pa_hashmap_steal_first(u->device_infos))) device_info_free(d); pa_hashmap_free(u->device_infos, NULL, NULL); pa_xfree(u); }