[pulseaudio-discuss] [PATCH v2 4/5] alsa-mixer: Remove the "name" option from the "General" section of path configuration files.

Tanu Kaskinen tanuk at iki.fi
Fri Jun 29 08:04:58 PDT 2012


This means that the path names will always correspond to the
path configuration file names, so they will automatically be
unique (in the scope of one card).
---
 src/modules/alsa/alsa-mixer.c |   34 ++++++++++++++--------------------
 1 file changed, 14 insertions(+), 20 deletions(-)

diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index 21740c9..b573e8d 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -2366,7 +2366,6 @@ pa_alsa_path* pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa
         { "priority",            pa_config_parse_unsigned,          NULL, "General" },
         { "description-key",     pa_config_parse_string,            NULL, "General" },
         { "description",         pa_config_parse_string,            NULL, "General" },
-        { "name",                pa_config_parse_string,            NULL, "General" },
 
         /* [Option ...] */
         { "priority",            option_parse_priority,             NULL, NULL },
@@ -2403,7 +2402,6 @@ pa_alsa_path* pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa
     items[0].data = &p->priority;
     items[1].data = &p->description_key;
     items[2].data = &p->description;
-    items[3].data = &p->name;
 
     if (!paths_dir)
         paths_dir = get_default_paths_dir();
@@ -3179,52 +3177,48 @@ static void path_set_condense(pa_alsa_path_set *ps, snd_mixer_t *m) {
     }
 }
 
-static pa_alsa_path* path_set_find_path_by_name(pa_alsa_path_set *ps, const char* name, pa_alsa_path *ignore)
-{
+static pa_alsa_path* path_set_find_path_by_description(pa_alsa_path_set *ps, const char* description, pa_alsa_path *ignore) {
     pa_alsa_path* p;
     void *state;
 
     PA_HASHMAP_FOREACH(p, ps->paths, state)
-        if (p != ignore && pa_streq(p->name, name))
+        if (p != ignore && pa_streq(p->description, description))
             return p;
+
     return NULL;
 }
 
-static void path_set_make_paths_unique(pa_alsa_path_set *ps) {
+static void path_set_make_path_descriptions_unique(pa_alsa_path_set *ps) {
     pa_alsa_path *p, *q;
     void *state, *state2;
 
     PA_HASHMAP_FOREACH(p, ps->paths, state) {
         unsigned i;
-        char *m;
+        char *old_description;
 
-        q = path_set_find_path_by_name(ps, p->name, p);
+        q = path_set_find_path_by_description(ps, p->description, p);
 
         if (!q)
             continue;
 
-        m = pa_xstrdup(p->name);
+        old_description = pa_xstrdup(p->description);
 
-        /* OK, this name is not unique, hence let's rename */
+        /* OK, this description is not unique, hence let's rename */
         i = 1;
         PA_HASHMAP_FOREACH(q, ps->paths, state2) {
-            char *nn, *nd;
+            char *new_description;
 
-            if (!pa_streq(q->name, m))
+            if (!pa_streq(q->description, old_description))
                 continue;
 
-            nn = pa_sprintf_malloc("%s-%u", m, i);
-            pa_xfree(q->name);
-            q->name = nn;
-
-            nd = pa_sprintf_malloc("%s %u", q->description, i);
+            new_description = pa_sprintf_malloc("%s %u", q->description, i);
             pa_xfree(q->description);
-            q->description = nd;
+            q->description = new_description;
 
             i++;
         }
 
-        pa_xfree(m);
+        pa_xfree(old_description);
     }
 }
 
@@ -3752,7 +3746,7 @@ static void mapping_paths_probe(pa_alsa_mapping *m, pa_alsa_profile *profile,
     }
 
     path_set_condense(ps, mixer_handle);
-    path_set_make_paths_unique(ps);
+    path_set_make_path_descriptions_unique(ps);
 
     if (mixer_handle)
         snd_mixer_close(mixer_handle);
-- 
1.7.10



More information about the pulseaudio-discuss mailing list