]> code.delx.au - pulseaudio/commitdiff
raop: Allow for nice sink descriptions to be set (interpolated from avahi)
authorColin Guthrie <cguthrie@mandriva.org>
Sun, 1 Mar 2009 18:10:35 +0000 (18:10 +0000)
committerColin Guthrie <cguthrie@mandriva.org>
Sun, 1 Mar 2009 23:19:31 +0000 (23:19 +0000)
src/modules/module-raop-discover.c
src/modules/module-raop-sink.c

index df3931512a48346195698748540a7ad16c901863..7df549eaf90dbcc6abd160a8ad7d3c8bbaa10fbf 100644 (file)
@@ -152,11 +152,18 @@ static void resolver_cb(
     if (event != AVAHI_RESOLVER_FOUND)
         pa_log("Resolving of '%s' failed: %s", name, avahi_strerror(avahi_client_errno(u->client)));
     else {
-        char *device = NULL, *dname, *vname, *args;
+        char *device = NULL, *nicename, *dname, *vname, *args;
         char at[AVAHI_ADDRESS_STR_MAX];
         AvahiStringList *l;
         pa_module *m;
 
+        if ((nicename = strstr(name, "@"))) {
+            ++nicename;
+            if (strlen(nicename) > 0) {
+                pa_log_debug("Found RAOP: %s", nicename);
+            }
+        }
+
         for (l = txt; l; l = l->next) {
             char *key, *value;
             pa_assert_se(avahi_string_list_get_pair(l, &key, &value, NULL) == 0);
@@ -190,10 +197,20 @@ static void resolver_cb(
                                  "sink_name=%s",
                                  avahi_address_snprint(at, sizeof(at), a), port,
                                  vname);*/
-        args = pa_sprintf_malloc("server=%s "
-                                 "sink_name=%s",
-                                 avahi_address_snprint(at, sizeof(at), a),
-                                 vname);
+        if (nicename) {
+            args = pa_sprintf_malloc("server=%s "
+                                     "sink_name=%s "
+                                     "description=\"%s\"",
+                                     avahi_address_snprint(at, sizeof(at), a),
+                                     vname,
+                                     nicename);
+
+        } else {
+            args = pa_sprintf_malloc("server=%s "
+                                     "sink_name=%s",
+                                     avahi_address_snprint(at, sizeof(at), a),
+                                     vname);
+        }
 
         pa_log_debug("Loading module-raop-sink with arguments '%s'", args);
 
index da338f5d736fb6357dcdbce085dbb2a365588f28..88fc6f1ecf9250e3ad448393e4b38c5a3f3060ee 100644 (file)
@@ -72,6 +72,7 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
 PA_MODULE_LOAD_ONCE(FALSE);
 PA_MODULE_USAGE(
         "sink_name=<name for the sink> "
+        "description=<description for the sink> "
         "server=<address>  "
         "format=<sample format> "
         "channels=<number of channels> "
@@ -122,6 +123,7 @@ static const char* const valid_modargs[] = {
     "format",
     "channels",
     "sink_name",
+    "description",
     NULL
 };
 
@@ -502,7 +504,7 @@ int pa__init(pa_module*m) {
     struct userdata *u = NULL;
     pa_sample_spec ss;
     pa_modargs *ma = NULL;
-    const char *server;
+    const char *server, *desc;
     pa_sink_new_data data;
 
     pa_assert(m);
@@ -564,7 +566,10 @@ int pa__init(pa_module*m) {
     pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME));
     pa_sink_new_data_set_sample_spec(&data, &ss);
     pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, server);
-    pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "RAOP sink '%s'", server);
+    if ((desc = pa_modargs_get_value(ma, "description", NULL)))
+        pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, desc);
+    else
+        pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "RAOP sink '%s'", server);
 
     u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
     pa_sink_new_data_done(&data);