send_entry_removed_signal(de);
trigger_save(de->userdata);
- pa_assert_se(pa_hashmap_remove(de->userdata->dbus_entries, de->entry_name));
- dbus_entry_free(de);
+ pa_assert_se(pa_hashmap_remove_and_free(de->userdata->dbus_entries, de->entry_name) >= 0);
pa_dbus_send_empty_reply(conn, msg);
}
}
if (sink_input->save_muted) {
- entry->muted = pa_sink_input_get_mute(sink_input);
+ entry->muted = sink_input->muted;
entry->muted_valid = true;
mute_updated = !created_new_entry && (!old->muted_valid || entry->muted != old->muted);
}
if (source_output->save_muted) {
- entry->muted = pa_source_output_get_mute(source_output);
+ entry->muted = source_output->muted;
entry->muted_valid = true;
mute_updated = !created_new_entry && (!old->muted_valid || entry->muted != old->muted);
removed the sink element from the rule. */
si->save_sink = false;
/* This is cheating a bit. The sink input itself has not changed
- but the rules governing it's routing have, so we fire this event
+ but the rules governing its routing have, so we fire this event
such that other routing modules (e.g. module-device-manager)
will pick up the change and reapply their routing */
pa_subscription_post(si->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, si->index);
removed the source element from the rule. */
so->save_source = false;
/* This is cheating a bit. The source output itself has not changed
- but the rules governing it's routing have, so we fire this event
+ but the rules governing its routing have, so we fire this event
such that other routing modules (e.g. module-device-manager)
will pick up the change and reapply their routing */
pa_subscription_post(so->core, PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_CHANGE, so->index);
PA_HASHMAP_FOREACH(de, u->dbus_entries, state) {
send_entry_removed_signal(de);
- dbus_entry_free(pa_hashmap_remove(u->dbus_entries, de->entry_name));
+ pa_hashmap_remove_and_free(u->dbus_entries, de->entry_name);
}
#endif
pa_database_clear(u->database);
pa_tagstruct_get_channel_map(t, &entry->channel_map) ||
pa_tagstruct_get_cvolume(t, &entry->volume) < 0 ||
pa_tagstruct_gets(t, &device) < 0 ||
- pa_tagstruct_get_boolean(t, &muted) < 0)
+ pa_tagstruct_get_boolean(t, &muted) < 0) {
+ entry_free(entry);
goto fail;
+ }
if (!name || !*name) {
entry_free(entry);
#ifdef HAVE_DBUS
if ((de = pa_hashmap_get(u->dbus_entries, name))) {
send_entry_removed_signal(de);
- dbus_entry_free(pa_hashmap_remove(u->dbus_entries, name));
+ pa_hashmap_remove_and_free(u->dbus_entries, name);
}
#endif