diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 21655d708..d41b5840b 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -53,15 +53,18 @@ static int setting_select(pa_alsa_setting *s, snd_mixer_t *m); struct description_map { - const char *name; + const char *key; const char *description; }; -static const char *lookup_description(const char *name, const struct description_map dm[], unsigned n) { +static const char *lookup_description(const char *key, const struct description_map dm[], unsigned n) { unsigned i; + if (!key) + return NULL; + for (i = 0; i < n; i++) - if (pa_streq(dm[i].name, name)) + if (pa_streq(dm[i].key, key)) return _(dm[i].description); return NULL; @@ -2361,12 +2364,16 @@ static int path_verify(pa_alsa_path *p) { return -1; if (!p->description) - p->description = pa_xstrdup(lookup_description(p->name, + p->description = pa_xstrdup(lookup_description(p->description_key ? p->description_key : p->name, well_known_descriptions, PA_ELEMENTSOF(well_known_descriptions))); - if (!p->description) + if (!p->description) { + if (p->description_key) + pa_log_warn("Path %s: Unrecognized description key: %s", p->name, p->description_key); + p->description = pa_xstrdup(p->name); + } return 0; } @@ -2388,6 +2395,7 @@ pa_alsa_path* pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa pa_config_item items[] = { /* [General] */ { "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" }, { "mute-during-activation", pa_config_parse_bool, NULL, "General" }, @@ -2427,10 +2435,11 @@ pa_alsa_path* pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa p->eld_device = -1; items[0].data = &p->priority; - items[1].data = &p->description; - items[2].data = &p->name; - items[3].data = &mute_during_activation; - items[4].data = &p->eld_device; + items[1].data = &p->description_key; + items[2].data = &p->description; + items[3].data = &p->name; + items[4].data = &mute_during_activation; + items[5].data = &p->eld_device; if (!paths_dir) paths_dir = get_default_paths_dir(); diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h index b3f7455e7..3d50ebb61 100644 --- a/src/modules/alsa/alsa-mixer.h +++ b/src/modules/alsa/alsa-mixer.h @@ -180,6 +180,7 @@ struct pa_alsa_path { pa_device_port* port; char *name; + char *description_key; char *description; unsigned priority; int eld_device; diff --git a/src/modules/alsa/mixer/paths/analog-input-aux.conf b/src/modules/alsa/mixer/paths/analog-input-aux.conf index e6aa064ff..a5a4baaab 100644 --- a/src/modules/alsa/mixer/paths/analog-input-aux.conf +++ b/src/modules/alsa/mixer/paths/analog-input-aux.conf @@ -20,7 +20,7 @@ [General] priority = 80 -name = analog-input +description-key = analog-input [Element Capture] switch = mute diff --git a/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf b/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf index f6ea94b9f..9334d451b 100644 --- a/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf +++ b/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf @@ -20,7 +20,7 @@ [General] priority = 78 -name = analog-input-microphone-dock +description-key = analog-input-microphone-dock [Jack Dock Mic] required-any = any diff --git a/src/modules/alsa/mixer/paths/analog-input-fm.conf b/src/modules/alsa/mixer/paths/analog-input-fm.conf index 7f150e369..dfadb003d 100644 --- a/src/modules/alsa/mixer/paths/analog-input-fm.conf +++ b/src/modules/alsa/mixer/paths/analog-input-fm.conf @@ -20,7 +20,7 @@ [General] priority = 70 -name = analog-input-radio +description-key = analog-input-radio [Element Capture] switch = mute diff --git a/src/modules/alsa/mixer/paths/analog-input-front-mic.conf b/src/modules/alsa/mixer/paths/analog-input-front-mic.conf index bb2e80689..3fb5f5e85 100644 --- a/src/modules/alsa/mixer/paths/analog-input-front-mic.conf +++ b/src/modules/alsa/mixer/paths/analog-input-front-mic.conf @@ -20,7 +20,7 @@ [General] priority = 85 -name = analog-input-microphone-front +description-key = analog-input-microphone-front [Jack Front Mic] required-any = any diff --git a/src/modules/alsa/mixer/paths/analog-input-headphone-mic.conf b/src/modules/alsa/mixer/paths/analog-input-headphone-mic.conf index 9b9213af5..688b8ac97 100644 --- a/src/modules/alsa/mixer/paths/analog-input-headphone-mic.conf +++ b/src/modules/alsa/mixer/paths/analog-input-headphone-mic.conf @@ -21,7 +21,7 @@ [General] priority = 87 -name = analog-input-microphone +description-key = analog-input-microphone [Jack Headphone Mic] required-any = any diff --git a/src/modules/alsa/mixer/paths/analog-input-headset-mic.conf b/src/modules/alsa/mixer/paths/analog-input-headset-mic.conf index 9a9dc357f..0a3d661f5 100644 --- a/src/modules/alsa/mixer/paths/analog-input-headset-mic.conf +++ b/src/modules/alsa/mixer/paths/analog-input-headset-mic.conf @@ -20,7 +20,7 @@ [General] priority = 87 -name = analog-input-microphone-headset +description-key = analog-input-microphone-headset [Jack Headset Mic] required-any = any diff --git a/src/modules/alsa/mixer/paths/analog-input-internal-mic-always.conf b/src/modules/alsa/mixer/paths/analog-input-internal-mic-always.conf index 37f9b17ca..cd08531b7 100644 --- a/src/modules/alsa/mixer/paths/analog-input-internal-mic-always.conf +++ b/src/modules/alsa/mixer/paths/analog-input-internal-mic-always.conf @@ -21,7 +21,7 @@ [General] priority = 89 -name = analog-input-microphone-internal +description-key = analog-input-microphone-internal [Jack Mic] state.plugged = no diff --git a/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf b/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf index 4718dd06c..ae3e9a832 100644 --- a/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf +++ b/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf @@ -21,7 +21,7 @@ [General] priority = 89 -name = analog-input-microphone-internal +description-key = analog-input-microphone-internal [Jack Mic] state.plugged = no diff --git a/src/modules/alsa/mixer/paths/analog-input-mic-line.conf b/src/modules/alsa/mixer/paths/analog-input-mic-line.conf index fb808381d..13db33b7a 100644 --- a/src/modules/alsa/mixer/paths/analog-input-mic-line.conf +++ b/src/modules/alsa/mixer/paths/analog-input-mic-line.conf @@ -20,7 +20,7 @@ [General] priority = 85 -name = analog-input +description-key = analog-input [Element Capture] switch = mute diff --git a/src/modules/alsa/mixer/paths/analog-input-mic.conf b/src/modules/alsa/mixer/paths/analog-input-mic.conf index 9e5f04446..17f3988f4 100644 --- a/src/modules/alsa/mixer/paths/analog-input-mic.conf +++ b/src/modules/alsa/mixer/paths/analog-input-mic.conf @@ -20,7 +20,7 @@ [General] priority = 87 -name = analog-input-microphone +description-key = analog-input-microphone [Jack Mic] required-any = any diff --git a/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf b/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf index 397efba92..ac78b5b98 100644 --- a/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf +++ b/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf @@ -20,7 +20,7 @@ [General] priority = 82 -name = analog-input-microphone-rear +description-key = analog-input-microphone-rear [Jack Rear Mic] required-any = any diff --git a/src/modules/alsa/mixer/paths/analog-input-tvtuner.conf b/src/modules/alsa/mixer/paths/analog-input-tvtuner.conf index fae3ce835..446446a48 100644 --- a/src/modules/alsa/mixer/paths/analog-input-tvtuner.conf +++ b/src/modules/alsa/mixer/paths/analog-input-tvtuner.conf @@ -20,7 +20,7 @@ [General] priority = 70 -name = analog-input-video +description-key = analog-input-video [Element Capture] switch = mute diff --git a/src/modules/alsa/mixer/paths/analog-output-desktop-speaker.conf b/src/modules/alsa/mixer/paths/analog-output-desktop-speaker.conf index 099823ee3..2b68117a2 100644 --- a/src/modules/alsa/mixer/paths/analog-output-desktop-speaker.conf +++ b/src/modules/alsa/mixer/paths/analog-output-desktop-speaker.conf @@ -20,7 +20,7 @@ [General] priority = 101 -name = analog-output-speaker +description-key = analog-output-speaker [Properties] device.icon_name = audio-speakers diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones-2.conf b/src/modules/alsa/mixer/paths/analog-output-headphones-2.conf index 6161ff5a1..75689243c 100644 --- a/src/modules/alsa/mixer/paths/analog-output-headphones-2.conf +++ b/src/modules/alsa/mixer/paths/analog-output-headphones-2.conf @@ -20,7 +20,7 @@ [General] priority = 89 -name = analog-output-headphones +description-key = analog-output-headphones [Properties] device.icon_name = audio-headphones diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones.conf b/src/modules/alsa/mixer/paths/analog-output-headphones.conf index 76cd01e15..e68203373 100644 --- a/src/modules/alsa/mixer/paths/analog-output-headphones.conf +++ b/src/modules/alsa/mixer/paths/analog-output-headphones.conf @@ -20,7 +20,7 @@ [General] priority = 90 -name = analog-output-headphones +description-key = analog-output-headphones [Properties] device.icon_name = audio-headphones diff --git a/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf b/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf index 8a2b3dfa2..c511813c8 100644 --- a/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf +++ b/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf @@ -21,7 +21,7 @@ [General] priority = 100 -name = analog-output-speaker +description-key = analog-output-speaker [Properties] device.icon_name = audio-speakers diff --git a/src/modules/alsa/mixer/paths/analog-output-speaker.conf b/src/modules/alsa/mixer/paths/analog-output-speaker.conf index 7b47fc242..8416a2589 100644 --- a/src/modules/alsa/mixer/paths/analog-output-speaker.conf +++ b/src/modules/alsa/mixer/paths/analog-output-speaker.conf @@ -20,7 +20,7 @@ [General] priority = 100 -name = analog-output-speaker +description-key = analog-output-speaker [Properties] device.icon_name = audio-speakers diff --git a/src/modules/alsa/mixer/paths/analog-output.conf.common b/src/modules/alsa/mixer/paths/analog-output.conf.common index 73d09f81d..727b776ee 100644 --- a/src/modules/alsa/mixer/paths/analog-output.conf.common +++ b/src/modules/alsa/mixer/paths/analog-output.conf.common @@ -55,7 +55,13 @@ ; [General] ; priority = ... # Priority for this path -; description = ... +; description-key = ... # The path description is looked up from a table in path_verify() in +; # src/modules/alsa/alsa-mixer.c. By default the path name (i.e. the file name +; # minus the ".conf" suffix) is used as the lookup key, but if this option is +; # set, then the given string is used as the key instead. In any case the +; # "description" option can be used to override the path description. +; description = ... # Description for this path. Overrides the normal description lookup logic, as +; # described in the "description-key" documentation above. ; mute-during-activation = yes | no # If this path supports hardware mute, should the hw mute be used while activating this ; # path? In some cases this can reduce extra noises during port switching, while in other ; # cases this can increase such noises. Default: no.