]> code.delx.au - pulseaudio/commitdiff
alsa-mixer: Fix path set building when using the element-output or element-input...
authorTanu Kaskinen <tanu.kaskinen@digia.com>
Fri, 25 Feb 2011 14:27:27 +0000 (16:27 +0200)
committerColin Guthrie <cguthrie@mandriva.org>
Fri, 25 Feb 2011 15:44:44 +0000 (15:44 +0000)
When creating synthesized paths, pa_alsa_path_set_new() created duplicate
elements for each path, and one of the duplicate elements would be marked as
required absent. That made path probing fail. While debugging this, I noticed
also that pa_alsa_path_synthesize() didn't initialize p->last_element properly.

src/modules/alsa/alsa-mixer.c

index 946cbe247b1548abe5e5a86022d8994d7162f35e..7d811a8f0f70a901cb7e88d99a105d078893822f 100644 (file)
@@ -1992,6 +1992,7 @@ pa_alsa_path* pa_alsa_path_synthesize(const char*element, pa_alsa_direction_t di
     e->volume_use = PA_ALSA_VOLUME_MERGE;
 
     PA_LLIST_PREPEND(pa_alsa_element, p->elements, e);
+    p->last_element = e;
     return p;
 }
 
@@ -2390,6 +2391,10 @@ pa_alsa_path_set *pa_alsa_path_set_new(pa_alsa_mapping *m, pa_alsa_direction_t d
         /* Mark all other passed elements for require-absent */
         for (je = en; *je; je++) {
             pa_alsa_element *e;
+
+            if (je == ie)
+                continue;
+
             e = pa_xnew0(pa_alsa_element, 1);
             e->path = p;
             e->alsa_name = pa_xstrdup(*je);