]> code.delx.au - pulseaudio/commitdiff
alsa-mixer: Make sure unsupported paths are removed after probing
authorDavid Henningsson <david.henningsson@canonical.com>
Thu, 19 Jan 2012 09:30:31 +0000 (10:30 +0100)
committerColin Guthrie <colin@mageia.org>
Mon, 30 Jan 2012 11:17:08 +0000 (11:17 +0000)
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
src/modules/alsa/alsa-mixer.c

index 703aaf8779f16fb6c91a0d48caba26dcd28c6fed..2aa708dc632fbae7ed96ac4d5bede0247878cd86 100644 (file)
@@ -4224,6 +4224,23 @@ static snd_pcm_t* mapping_open_pcm(pa_alsa_mapping *m,
                               &try_buffer_size, 0, NULL, NULL, TRUE);
 }
 
+static void paths_drop_unsupported(pa_hashmap* h) {
+
+    void* state = NULL;
+    const void* key;
+    pa_alsa_path* p;
+
+    pa_assert(h);
+    p = pa_hashmap_iterate(h, &state, &key);
+    while (p) {
+        if (p->supported <= 0) {
+            pa_hashmap_remove(h, key);
+            pa_alsa_path_free(p);
+        }
+        p = pa_hashmap_iterate(h, &state, &key);
+    }
+}
+
 void pa_alsa_profile_set_probe(
         pa_alsa_profile_set *ps,
         const char *dev_id,
@@ -4319,6 +4336,9 @@ void pa_alsa_profile_set_probe(
             mapping_free(m);
         }
 
+    paths_drop_unsupported(ps->input_paths);
+    paths_drop_unsupported(ps->output_paths);
+
     ps->probed = TRUE;
 }