scripting: support for zone based routing in application classes
[profile/ivi/pulseaudio-module-murphy-ivi.git] / murphy / murphyif.c
index e1c491d..9c36cc3 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);
@@ -2118,8 +2137,6 @@ static rset_hash *rset_hashmap_put(struct userdata *u,
     rh->nodes[i+0] = node;
     rh->nodes[i+1] = NULL;
 
-    pa_log("    depth: %u", rh->nnode);
-
     return rh;
 }
 
@@ -2157,8 +2174,6 @@ static int rset_hashmap_remove(struct userdata *u,
 
     if ((rh = pa_hashmap_get(rif->nodes.rsetid, rsetid))) {
 
-        pa_log("    depth: %u", rh->nnode);
-
         for (i = 0;  i < rh->nnode;  i++) {
             if (node == rh->nodes[i]) {
                 if (rh->nnode <= 1) {