X-Git-Url: https://code.delx.au/pulseaudio/blobdiff_plain/d806b197144733607b0ecb8678c6ee5d99ccc9ea..ef4ae785aa1d4d67b5df1c9414f6c1a144bc3460:/src/modules/module-stream-restore.c diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c index 9a822579..38d6aac6 100644 --- a/src/modules/module-stream-restore.c +++ b/src/modules/module-stream-restore.c @@ -603,8 +603,8 @@ static void handle_add_entry(DBusConnection *conn, DBusMessage *msg, void *userd const char *device = NULL; pa_channel_map map; pa_cvolume vol; - dbus_bool_t muted = false; - dbus_bool_t apply_immediately = false; + dbus_bool_t muted = FALSE; + dbus_bool_t apply_immediately = FALSE; struct dbus_entry *dbus_entry = NULL; struct entry *e = NULL; @@ -847,7 +847,7 @@ static void handle_entry_get_mute(DBusConnection *conn, DBusMessage *msg, void * pa_assert_se(e = entry_read(de->userdata, de->entry_name)); - mute = e->muted_valid ? e->muted : false; + mute = e->muted_valid ? e->muted : FALSE; pa_dbus_send_basic_variant_reply(conn, msg, DBUS_TYPE_BOOLEAN, &mute); @@ -904,7 +904,7 @@ static void handle_entry_get_all(DBusConnection *conn, DBusMessage *msg, void *u pa_assert_se(e = entry_read(de->userdata, de->entry_name)); device = e->device_valid ? e->device : ""; - mute = e->muted_valid ? e->muted : false; + mute = e->muted_valid ? e->muted : FALSE; pa_assert_se((reply = dbus_message_new_method_return(msg))); @@ -949,8 +949,7 @@ static void handle_entry_remove(DBusConnection *conn, DBusMessage *msg, void *us 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); } @@ -1300,7 +1299,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 } 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); @@ -1350,7 +1349,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 } 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); @@ -1912,7 +1911,7 @@ static void entry_apply(struct userdata *u, const char *name, struct entry *e) { 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); @@ -1960,7 +1959,7 @@ static void entry_apply(struct userdata *u, const char *name, struct entry *e) { 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); @@ -1995,7 +1994,9 @@ PA_GCC_UNUSED static void stream_restore_dump_database(struct userdata *u) { pa_log("name=%s", name); pa_log("device=%s %s", e->device, pa_yes_no(e->device_valid)); pa_log("channel_map=%s", pa_channel_map_snprint(t, sizeof(t), &e->channel_map)); - pa_log("volume=%s %s", pa_cvolume_snprint(t, sizeof(t), &e->volume), pa_yes_no(e->volume_valid)); + pa_log("volume=%s %s", + pa_cvolume_snprint_verbose(t, sizeof(t), &e->volume, &e->channel_map, true), + pa_yes_no(e->volume_valid)); pa_log("mute=%s %s", pa_yes_no(e->muted), pa_yes_no(e->volume_valid)); entry_free(e); } @@ -2097,7 +2098,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio 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); @@ -2117,8 +2118,10 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio 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); @@ -2209,7 +2212,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio #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 @@ -2449,7 +2452,7 @@ int pa__init(pa_module*m) { #ifdef HAVE_DBUS u->dbus_protocol = pa_dbus_protocol_get(u->core); - u->dbus_entries = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); + u->dbus_entries = pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func, NULL, (pa_free_cb_t) dbus_entry_free); pa_assert_se(pa_dbus_protocol_add_interface(u->dbus_protocol, OBJECT_PATH, &stream_restore_interface_info, u) >= 0); pa_assert_se(pa_dbus_protocol_register_extension(u->dbus_protocol, INTERFACE_STREAM_RESTORE) >= 0); @@ -2505,7 +2508,7 @@ void pa__done(pa_module*m) { pa_assert_se(pa_dbus_protocol_unregister_extension(u->dbus_protocol, INTERFACE_STREAM_RESTORE) >= 0); pa_assert_se(pa_dbus_protocol_remove_interface(u->dbus_protocol, OBJECT_PATH, stream_restore_interface_info.name) >= 0); - pa_hashmap_free(u->dbus_entries, (pa_free_cb_t) dbus_entry_free); + pa_hashmap_free(u->dbus_entries); pa_dbus_protocol_unref(u->dbus_protocol); }