static void sink_input_rule_file_free(struct sink_input_rule_file *rf, struct userdata *u) {
pa_assert(rf);
- pa_hashmap_free(rf->rules, (pa_free2_cb_t) sink_input_rule_free, NULL);
+ pa_hashmap_free(rf->rules, (pa_free_cb_t) sink_input_rule_free);
pa_xfree(rf->client_name);
pa_xfree(rf->target_key);
pa_xfree(rf->target_value);
table[0].data = &r->application_name;
table[1].data = &r->icon_name;
- if (pa_config_parse(fn, NULL, table, r) < 0)
+ if (pa_config_parse(fn, NULL, table, NULL, r) < 0)
pa_log_warn("Failed to parse file %s.", fn);
if (!first) {
}
}
- pa_hashmap_free(valid, NULL, NULL);
+ pa_hashmap_free(valid, NULL);
iter = possible;
while (*iter) {
rf->rules = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
rf->fn = pa_sprintf_malloc(SINK_INPUT_RULE_DIR PA_PATH_SEP "%s", file->d_name);
- if (pa_config_parse(rf->fn, NULL, table, rf) >= 0) {
+ if (pa_config_parse(rf->fn, NULL, table, NULL, rf) >= 0) {
pa_log_info("Successfully parsed sink input conf file %s", file->d_name);
closedir(sinkinputrulefiles_dir);
if (pa_hashmap_isempty(rules)) {
- pa_hashmap_free(rules, NULL, NULL);
+ pa_hashmap_free(rules, NULL);
return NULL;
}
while ((r = pa_hashmap_steal_first(u->cache)))
rule_free(r);
- pa_hashmap_free(u->cache, NULL, NULL);
+ pa_hashmap_free(u->cache, NULL);
}
if (u->sink_input_rules)
- pa_hashmap_free(u->sink_input_rules, (pa_free2_cb_t) sink_input_rule_file_free, NULL);
+ pa_hashmap_free(u->sink_input_rules, (pa_free_cb_t) sink_input_rule_file_free);
if (u->directory_watch_client)
pa_client_free(u->directory_watch_client);
if (u->paths_to_clients)
- pa_hashmap_free(u->paths_to_clients, (pa_free2_cb_t) client_data_free, NULL);
+ pa_hashmap_free(u->paths_to_clients, (pa_free_cb_t) client_data_free);
#endif
pa_xfree(u);
while ((o = pa_idxset_first(u->outputs, NULL)))
output_free(o);
- pa_idxset_free(u->outputs, NULL, NULL);
+ pa_idxset_free(u->outputs, NULL);
}
if (u->sink)
if (u->routerif && am->domain.id != AM_ID_INVALID)
pa_routerif_unregister_domain(u, am->domain.id);
- pa_hashmap_free(am->nodes, NULL,NULL);
- pa_hashmap_free(am->conns, NULL,NULL);
+ pa_hashmap_free(am->nodes, NULL);
+ pa_hashmap_free(am->conns, NULL);
pa_xfree((void *)am->domain.name);
pa_xfree(am);
u->audiomgr = NULL;
void pa_constrain_done(struct userdata *u)
{
pa_constrain *constrain;
+ mir_constr_def *cd;
+ void *state;
if (u && (constrain = u->constrain)) {
- pa_hashmap_free(constrain->defs, pa_hashmap_constrdef_free, u);
+ PA_HASHMAP_FOREACH(cd, constrain->defs, state) {
+ cstrdef_destroy(u, cd);
+ }
+
+ pa_hashmap_free(constrain->defs, NULL);
pa_xfree(constrain);
void pa_discover_done(struct userdata *u)
{
pa_discover *discover;
+ void *state;
+ mir_node *node;
if (u && (discover = u->discover)) {
- pa_hashmap_free(discover->nodes.byname, pa_hashmap_node_free,u);
- pa_hashmap_free(discover->nodes.byptr, NULL,NULL);
+ PA_HASHMAP_FOREACH(node, discover->nodes.byname, state) {
+ mir_node_destroy(u, node);
+ }
+ pa_hashmap_free(discover->nodes.byname, NULL);
+ pa_hashmap_free(discover->nodes.byptr, NULL);
pa_xfree(discover);
u->discover = NULL;
}
default: /* do nothing */ return;
}
- if (port->is_output) {
+ if (port->direction == PA_DIRECTION_OUTPUT) {
PA_IDXSET_FOREACH(sink, core->sinks, idx) {
if (sink->ports) {
if (port == pa_hashmap_get(sink->ports, port->name)) {
}
}
- if (port->is_input) {
+ if (port->direction == PA_DIRECTION_INPUT) {
PA_IDXSET_FOREACH(source, core->sources, idx) {
if (source->ports) {
if (port == pa_hashmap_get(source->ports, port->name)) {
* does works with all the profiles
*/
if (port->profiles && pa_hashmap_get(port->profiles, prof->name) &&
- ((port->is_input && data->direction == mir_input)||
- (port->is_output && data->direction == mir_output)))
+ ((port->direction == PA_DIRECTION_INPUT && data->direction == mir_input)||
+ (port->direction == PA_DIRECTION_OUTPUT && data->direction == mir_output)))
{
have_ports = TRUE;
if (u && (ap = u->extapi)) {
if (ap->conns)
- pa_hashmap_free(ap->conns, NULL,NULL);
+ pa_hashmap_free(ap->conns, NULL);
if (ap->subscribed)
- pa_idxset_free(ap->subscribed, NULL, NULL);
+ pa_idxset_free(ap->subscribed, NULL);
pa_xfree(ap);
}
}
#ifdef WITH_RESOURCES
resource_attribute *attr, *a;
resource_request *req, *r;
+ void *state;
+ rset_hash *rh;
+ pid_hash *ph;
#endif
if (u && (murphyif = u->murphyif)) {
resource_transport_destroy(murphyif);
- pa_hashmap_free(rif->nodes.rsetid, rset_hashmap_free, NULL);
- pa_hashmap_free(rif->nodes.pid, pid_hashmap_free, NULL);
+ PA_HASHMAP_FOREACH(rh, rif->nodes.rsetid, state) {
+ if (rh) {
+ pa_xfree(rh->nodes);
+ rset_data_free(rh->rset);
+ pa_xfree(rh);
+ }
+ }
+
+ PA_HASHMAP_FOREACH(ph, rif->nodes.pid, state) {
+ if (ph) {
+ pa_xfree((void *)ph->pid);
+ rset_data_free(ph->rset);
+ pa_xfree(ph);
+ }
+ }
+
+ pa_hashmap_free(rif->nodes.rsetid, NULL);
+ pa_hashmap_free(rif->nodes.pid, NULL);
PA_LLIST_FOREACH_SAFE(attr, a, rif->attrs)
resource_attribute_destroy(rif, attr);
};
-static void free_map_cb(void *, void *);
+static void free_map_cb(void *);
static int print_map(pa_hashmap *, const char *, char *, int);
pa_nodeset *pa_nodeset_init(struct userdata *u)
int i;
if (u && (ns = u->nodeset)) {
- pa_idxset_free(ns->nodes, NULL, NULL);
- pa_hashmap_free(ns->roles, free_map_cb, u);
- pa_hashmap_free(ns->binaries, free_map_cb, u);
+ pa_idxset_free(ns->nodes, NULL);
+ pa_hashmap_free(ns->roles, free_map_cb);
+ pa_hashmap_free(ns->binaries, free_map_cb);
for (i = 0; i < APCLASS_DIM; i++)
pa_xfree((void *)ns->class_name[i]);
}
-static void free_map_cb(void *void_map, void *void_userdata)
+static void free_map_cb(void *void_map)
{
- struct userdata *u = (struct userdata *)void_userdata;
pa_nodeset_map *map = (pa_nodeset_map *)void_map;
pa_xfree((void *)map->name);
pa_router *router;
mir_connection *conn, *c;
mir_node *e,*n;
+ void *state;
+ mir_rtgroup *rtg;
if (u && (router = u->router)) {
MIR_DLIST_FOR_EACH_SAFE(mir_node, rtprilist, e,n, &router->nodlist) {
pa_xfree(conn);
}
- pa_hashmap_free(router->rtgroups.input , pa_hashmap_rtgroup_free,u);
- pa_hashmap_free(router->rtgroups.output, pa_hashmap_rtgroup_free,u);
+ PA_HASHMAP_FOREACH(rtg, router->rtgroups.input, state) {
+ rtgroup_destroy(u, rtg);
+ }
+
+ PA_HASHMAP_FOREACH(rtg, router->rtgroups.output, state) {
+ rtgroup_destroy(u, rtg);
+ }
+
+ pa_hashmap_free(router->rtgroups.input, NULL);
+ pa_hashmap_free(router->rtgroups.output, NULL);
pa_xfree(router->classmap.input);
pa_xfree(router->classmap.output);