]> code.delx.au - pulseaudio/commitdiff
alsa: Use card description in default sink/source prefix when available
authorPete Beardmore <pete.beardmore@msn.com>
Thu, 13 Mar 2014 10:14:40 +0000 (10:14 +0000)
committerTanu Kaskinen <tanu.kaskinen@linux.intel.com>
Fri, 14 Mar 2014 14:16:46 +0000 (16:16 +0200)
When given an explicit device.description in card_properties, prefer
this information over other default prefixes (e.g. 'Built-in Audio')
when constructing sink/source descriptions.

For example, if I manually configure the card description to be
"FooBar", I then expect that the sinks and created by the card also
have "FooBar" in their description instead of generic "Built-in
Audio".

src/modules/alsa/alsa-sink.c
src/modules/alsa/alsa-source.c
src/modules/alsa/alsa-util.c
src/modules/alsa/alsa-util.h
src/modules/alsa/module-alsa-card.c
src/pulsecore/card.c
src/pulsecore/sink.c
src/pulsecore/sink.h
src/pulsecore/source.c

index ccf1137b32ddc041663ee08e32ee3137a36fd70c..400f97261b046d7517d61f53813c914e9db1ddc3 100644 (file)
@@ -2278,7 +2278,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
             pa_proplist_sets(data.proplist, key, pa_proplist_gets(mapping->proplist, key));
     }
 
-    pa_alsa_init_description(data.proplist);
+    pa_alsa_init_description(data.proplist, card);
 
     if (u->control_device)
         pa_alsa_init_proplist_ctl(data.proplist, u->control_device);
index 2e93e0fecc9ccfc76bb8b60522b9b379ec2c36d5..425f4f0f85f6a710eaedcd69a83f26ea70c4b57f 100644 (file)
@@ -1984,7 +1984,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
             pa_proplist_sets(data.proplist, key, pa_proplist_gets(mapping->proplist, key));
     }
 
-    pa_alsa_init_description(data.proplist);
+    pa_alsa_init_description(data.proplist, card);
 
     if (u->control_device)
         pa_alsa_init_proplist_ctl(data.proplist, u->control_device);
index 73b133210229f4a7db6ca4cee479672c8256a020..dca1f2e4c54d43554a15cfd3f9fffad58305e305 100644 (file)
@@ -868,11 +868,11 @@ void pa_alsa_refcnt_dec(void) {
     }
 }
 
-bool pa_alsa_init_description(pa_proplist *p) {
+bool pa_alsa_init_description(pa_proplist *p, pa_card *card) {
     const char *d, *k;
     pa_assert(p);
 
-    if (pa_device_init_description(p))
+    if (pa_device_init_description(p, card))
         return true;
 
     if (!(d = pa_proplist_gets(p, "alsa.card_name")))
index 0e3ae6985ea6c6399c746e4ff80a43fd8851b865..bb2ad4e9a2c70ce9ba14df15ef78f6b3820f54b8 100644 (file)
@@ -118,7 +118,7 @@ void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *
 void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card);
 void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm);
 void pa_alsa_init_proplist_ctl(pa_proplist *p, const char *name);
-bool pa_alsa_init_description(pa_proplist *p);
+bool pa_alsa_init_description(pa_proplist *p, pa_card *card);
 
 int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents);
 
index cf54c0fbd873d1e2d36b44de1003fc9a786520af..63ff6e6d480ad8cc79070e63eddd72af6a797a4d 100644 (file)
@@ -704,7 +704,7 @@ int pa__init(pa_module *m) {
     pa_alsa_init_proplist_card(m->core, data.proplist, u->alsa_card_index);
 
     pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id);
-    pa_alsa_init_description(data.proplist);
+    pa_alsa_init_description(data.proplist, NULL);
     set_card_name(&data, u->modargs, u->device_id);
 
     /* We need to give pa_modargs_get_value_boolean() a pointer to a local
index 9a29aebba982d4e59ba9a82694c602317aba4401..eca1e60602d1d8ade5f49c732832cad4f9ac9773 100644 (file)
@@ -201,7 +201,7 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
     c->userdata = NULL;
     c->set_profile = NULL;
 
-    pa_device_init_description(c->proplist);
+    pa_device_init_description(c->proplist, c);
     pa_device_init_icon(c->proplist, true);
     pa_device_init_intended_roles(c->proplist);
 
index 47ee0aa48b385c3e7b205e6d8d2eaa1d3e4c2ac9..08143e9b159e8fbfceb250fb340552e6ceef9bbf 100644 (file)
@@ -231,7 +231,7 @@ pa_sink* pa_sink_new(
     if (data->card)
         pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->card->proplist);
 
-    pa_device_init_description(data->proplist);
+    pa_device_init_description(data->proplist, data->card);
     pa_device_init_icon(data->proplist, true);
     pa_device_init_intended_roles(data->proplist);
 
@@ -3441,16 +3441,21 @@ bool pa_device_init_icon(pa_proplist *p, bool is_sink) {
     return true;
 }
 
-bool pa_device_init_description(pa_proplist *p) {
+bool pa_device_init_description(pa_proplist *p, pa_card *card) {
     const char *s, *d = NULL, *k;
     pa_assert(p);
 
     if (pa_proplist_contains(p, PA_PROP_DEVICE_DESCRIPTION))
         return true;
 
-    if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR)))
-        if (pa_streq(s, "internal"))
-            d = _("Built-in Audio");
+    if (card)
+        if ((s = pa_proplist_gets(card->proplist, PA_PROP_DEVICE_DESCRIPTION)))
+            d = s;
+
+    if (!d)
+        if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR)))
+            if (pa_streq(s, "internal"))
+                d = _("Built-in Audio");
 
     if (!d)
         if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_CLASS)))
index c7cb5f874450be3831b87f6d8c6def38f588d769..87b464eaa903290d2e8f34097868c552aef8d1ee 100644 (file)
@@ -399,7 +399,7 @@ void pa_sink_mute_changed(pa_sink *s, bool new_muted);
 
 void pa_sink_update_flags(pa_sink *s, pa_sink_flags_t mask, pa_sink_flags_t value);
 
-bool pa_device_init_description(pa_proplist *p);
+bool pa_device_init_description(pa_proplist *p, pa_card *card);
 bool pa_device_init_icon(pa_proplist *p, bool is_sink);
 bool pa_device_init_intended_roles(pa_proplist *p);
 unsigned pa_device_init_priority(pa_proplist *p);
index 853bb6c4deda55ed793c559776ba6280a633d5bf..2a600e28aa5efb9c9254498f5a3122ca52906525 100644 (file)
@@ -218,7 +218,7 @@ pa_source* pa_source_new(
     if (data->card)
         pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->card->proplist);
 
-    pa_device_init_description(data->proplist);
+    pa_device_init_description(data->proplist, data->card);
     pa_device_init_icon(data->proplist, false);
     pa_device_init_intended_roles(data->proplist);