modifications for hashmap and idxset free prototype changes in pulse 4.0 26/8326/1
authorJaska Uimonen <jaska.uimonen@helsinki.fi>
Fri, 9 Aug 2013 13:10:20 +0000 (16:10 +0300)
committerJaska Uimonen <jaska.uimonen@helsinki.fi>
Mon, 12 Aug 2013 11:04:23 +0000 (14:04 +0300)
augment/module-augment-properties.c
augment/module-dir-watch.c
combine/module-combine-sink.c
murphy/audiomgr.c
murphy/constrain.c
murphy/discover.c
murphy/extapi.c
murphy/murphyif.c
murphy/node.c
murphy/router.c

index 8c29ecf..f203da0 100644 (file)
@@ -129,7 +129,7 @@ static void sink_input_rule_free(struct sink_input_rule_section *s, struct userd
 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);
@@ -243,7 +243,7 @@ static void parse_file(struct rule *r, const char *fn, pa_config_item *table, pa
     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) {
@@ -613,7 +613,7 @@ static pa_hook_result_t process_sink_input(
         }
     }
 
-    pa_hashmap_free(valid, NULL, NULL);
+    pa_hashmap_free(valid, NULL);
 
     iter = possible;
     while (*iter) {
@@ -742,7 +742,7 @@ static pa_hashmap *update_sink_input_rules() {
             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);
 
@@ -762,7 +762,7 @@ static pa_hashmap *update_sink_input_rules() {
     closedir(sinkinputrulefiles_dir);
 
     if (pa_hashmap_isempty(rules)) {
-        pa_hashmap_free(rules, NULL, NULL);
+        pa_hashmap_free(rules, NULL);
         return NULL;
     }
 
@@ -873,11 +873,11 @@ void pa__done(pa_module *m) {
         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);
index 9d2dea8..cc0c490 100644 (file)
@@ -377,7 +377,7 @@ void pa__done(pa_module *m) {
 
 
     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);
index fdd6614..de22ceb 100644 (file)
@@ -1346,7 +1346,7 @@ void pa__done(pa_module*m) {
         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)
index 5db5c1f..4fc7f99 100644 (file)
@@ -113,8 +113,8 @@ void pa_audiomgr_done(struct userdata *u)
         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;
index de07ce0..4b07668 100644 (file)
@@ -60,9 +60,15 @@ pa_constrain *pa_constrain_init(struct userdata *u)
 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);
 
index 4252a24..6d210b9 100644 (file)
@@ -153,10 +153,15 @@ struct pa_discover *pa_discover_init(struct userdata *u)
 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;
     }
@@ -386,7 +391,7 @@ void pa_discover_port_available_changed(struct userdata *u,
         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)) {
@@ -400,7 +405,7 @@ void pa_discover_port_available_changed(struct userdata *u,
             }
         }
 
-        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)) {
@@ -1819,8 +1824,8 @@ static void handle_card_ports(struct userdata *u, mir_node *data,
              * 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;
 
index 566c6b5..e07a6ab 100644 (file)
@@ -131,9 +131,9 @@ void pa_extapi_done(struct userdata *u) {
 
     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);
     }
 }
index e1c491d..21a280d 100644 (file)
@@ -330,6 +330,9 @@ void pa_murphyif_done(struct userdata *u)
 #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)) {
@@ -370,8 +373,24 @@ void pa_murphyif_done(struct userdata *u)
 
         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);
index 94b40d6..ad14f91 100644 (file)
@@ -43,7 +43,7 @@ struct pa_nodeset {
 };
 
 
-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)
@@ -68,9 +68,9 @@ void pa_nodeset_done(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]);
@@ -505,9 +505,8 @@ const char *mir_privacy_str(mir_privacy privacy)
 }
 
 
-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);
index 3d74dba..a4ea986 100644 (file)
@@ -96,6 +96,8 @@ void pa_router_done(struct userdata *u)
     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) {
@@ -107,8 +109,16 @@ void pa_router_done(struct userdata *u)
             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);