SUBCOMMAND_EVENT
};
-
static struct entry* entry_new(void);
static void entry_free(struct entry *e);
static struct entry *entry_read(struct userdata *u, const char *name);
ENTRY_METHOD_HANDLER_MAX
};
-static pa_dbus_arg_info add_entry_args[] = { { "name", "s", "in" },
- { "device", "s", "in" },
- { "volume", "a(uu)", "in" },
- { "mute", "b", "in" },
- { "entry", "o", "out" } };
+static pa_dbus_arg_info add_entry_args[] = { { "name", "s", "in" },
+ { "device", "s", "in" },
+ { "volume", "a(uu)", "in" },
+ { "mute", "b", "in" },
+ { "apply_immediately", "b", "in" },
+ { "entry", "o", "out" } };
static pa_dbus_arg_info get_entry_by_name_args[] = { { "name", "s", "in" }, { "entry", "o", "out" } };
static pa_dbus_method_handler method_handlers[METHOD_HANDLER_MAX] = {
pa_native_connection *c;
uint32_t idx;
- for (c = pa_idxset_first(u->subscribed, &idx); c; c = pa_idxset_next(u->subscribed, &idx)) {
+ PA_IDXSET_FOREACH(c, u->subscribed, idx) {
pa_tagstruct *t;
t = pa_tagstruct_new(NULL, 0);
pa_datum next_key;
char *name;
struct dbus_entry *de;
- struct entry *e;
-
- done = !pa_database_next(u->database, &key, &next_key, NULL);
name = pa_xstrndup(key.data, key.size);
- pa_datum_free(&key);
-
- /* Use entry_read() for checking that the entry is valid. */
- if ((e = entry_read(u, name))) {
- de = dbus_entry_new(u, name);
- pa_assert_se(pa_hashmap_put(u->dbus_entries, de->entry_name, de) == 0);
- entry_free(e);
- }
-
+ de = dbus_entry_new(u, name);
+ pa_assert_se(pa_hashmap_put(u->dbus_entries, de->entry_name, de) == 0);
pa_xfree(name);
+ done = !pa_database_next(u->database, &key, &next_key, NULL);
+ pa_datum_free(&key);
key = next_key;
}
#endif
return -1;
}
-#ifdef HAVE_DBUS
-static void free_dbus_entry_cb(void *p, void *userdata) {
- struct dbus_entry *de = p;
-
- pa_assert(de);
-
- dbus_entry_free(de);
-}
-#endif
-
void pa__done(pa_module*m) {
struct userdata* u;
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, free_dbus_entry_cb, NULL);
+ pa_hashmap_free(u->dbus_entries, (pa_free_cb_t) dbus_entry_free);
pa_dbus_protocol_unref(u->dbus_protocol);
}
}
if (u->subscribed)
- pa_idxset_free(u->subscribed, NULL, NULL);
+ pa_idxset_free(u->subscribed, NULL);
pa_xfree(u);
}