[pulseaudio-discuss] [PATCH 3/9] Create nodes for sinks

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Thu Nov 7 18:00:08 CET 2013


All sinks that don't have ports should have nodes, because otherwise
routing streams to those sinks won't work when sink input routing is
changed to be node-based.
---
 src/modules/echo-cancel/module-echo-cancel.c | 3 +++
 src/modules/macosx/module-coreaudio-device.c | 3 +++
 src/modules/module-combine-sink.c            | 3 +++
 src/modules/module-equalizer-sink.c          | 3 +++
 src/modules/module-esound-sink.c             | 3 +++
 src/modules/module-ladspa-sink.c             | 3 +++
 src/modules/module-null-sink.c               | 3 +++
 src/modules/module-pipe-sink.c               | 3 +++
 src/modules/module-remap-sink.c              | 3 +++
 src/modules/module-solaris.c                 | 3 +++
 src/modules/module-tunnel-sink-new.c         | 4 ++++
 src/modules/module-tunnel.c                  | 3 +++
 src/modules/module-virtual-sink.c            | 3 +++
 src/modules/module-virtual-source.c          | 2 ++
 src/modules/module-virtual-surround-sink.c   | 3 +++
 src/modules/module-waveout.c                 | 4 ++++
 src/modules/oss/module-oss.c                 | 3 +++
 src/modules/raop/module-raop-sink.c          | 3 +++
 src/modules/xen/module-xenpv-sink.c          | 3 +++
 todo                                         | 1 -
 20 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/src/modules/echo-cancel/module-echo-cancel.c b/src/modules/echo-cancel/module-echo-cancel.c
index 2adce22..c31019d 100644
--- a/src/modules/echo-cancel/module-echo-cancel.c
+++ b/src/modules/echo-cancel/module-echo-cancel.c
@@ -1833,6 +1833,9 @@ int pa__init(pa_module*m) {
         pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "%s (echo cancelled with %s)",
                 pa_sink_get_description(sink_master), pa_source_get_description(source_master));
 
+    pa_sink_new_data_set_create_node(&sink_data, true);
+    pa_node_new_data_set_fallback_name_prefix(&sink_data.node_data, "echo-cancel");
+
     u->sink = pa_sink_new(m->core, &sink_data, (sink_master->flags & (PA_SINK_LATENCY | PA_SINK_DYNAMIC_LATENCY))
                                                | (u->use_volume_sharing ? PA_SINK_SHARE_VOLUME_WITH_MASTER : 0));
     pa_sink_new_data_done(&sink_data);
diff --git a/src/modules/macosx/module-coreaudio-device.c b/src/modules/macosx/module-coreaudio-device.c
index 7b3a002..efa61fa 100644
--- a/src/modules/macosx/module-coreaudio-device.c
+++ b/src/modules/macosx/module-coreaudio-device.c
@@ -447,6 +447,9 @@ static int ca_device_create_sink(pa_module *m, AudioBuffer *buf, int channel_idx
     if (u->vendor_name)
         pa_proplist_sets(new_data.proplist, PA_PROP_DEVICE_VENDOR_NAME, u->vendor_name);
 
+    pa_sink_new_data_set_create_node(&new_data, true);
+    pa_node_new_data_set_fallback_name_prefix(&new_data.node_data, "coreaudio");
+
     sink = pa_sink_new(m->core, &new_data, flags);
     pa_sink_new_data_done(&new_data);
 
diff --git a/src/modules/module-combine-sink.c b/src/modules/module-combine-sink.c
index da9a424..22fc976 100644
--- a/src/modules/module-combine-sink.c
+++ b/src/modules/module-combine-sink.c
@@ -1269,6 +1269,9 @@ int pa__init(pa_module*m) {
         pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Simultaneous Output");
     }
 
+    pa_sink_new_data_set_create_node(&data, true);
+    pa_node_new_data_set_fallback_name_prefix(&data.node_data, "combine");
+
     u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
     pa_sink_new_data_done(&data);
 
diff --git a/src/modules/module-equalizer-sink.c b/src/modules/module-equalizer-sink.c
index d274980..3c5bca1 100644
--- a/src/modules/module-equalizer-sink.c
+++ b/src/modules/module-equalizer-sink.c
@@ -1192,6 +1192,9 @@ int pa__init(pa_module*m) {
         goto fail;
     }
 
+    pa_sink_new_data_set_create_node(&sink_data, true);
+    pa_node_new_data_set_fallback_name_prefix(&sink_data.node_data, "equalizer");
+
     u->sink = pa_sink_new(m->core, &sink_data, (master->flags & (PA_SINK_LATENCY | PA_SINK_DYNAMIC_LATENCY))
                                                | (use_volume_sharing ? PA_SINK_SHARE_VOLUME_WITH_MASTER : 0));
     pa_sink_new_data_done(&sink_data);
diff --git a/src/modules/module-esound-sink.c b/src/modules/module-esound-sink.c
index 8b74ea4..7ca8259 100644
--- a/src/modules/module-esound-sink.c
+++ b/src/modules/module-esound-sink.c
@@ -599,6 +599,9 @@ int pa__init(pa_module*m) {
         goto fail;
     }
 
+    pa_sink_new_data_set_create_node(&data, true);
+    pa_node_new_data_set_fallback_name_prefix(&data.node_data, "esound");
+
     u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
     pa_sink_new_data_done(&data);
 
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index c4717c4..0cd94de 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -1230,6 +1230,9 @@ int pa__init(pa_module*m) {
         pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION,
                          "LADSPA Plugin %s on %s", d->Name, pa_sink_get_description(master));
 
+    pa_sink_new_data_set_create_node(&sink_data, true);
+    pa_node_new_data_set_fallback_name_prefix(&sink_data.node_data, "ladspa");
+
     u->sink = pa_sink_new(m->core, &sink_data,
                           (master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY)) | PA_SINK_SHARE_VOLUME_WITH_MASTER);
     pa_sink_new_data_done(&sink_data);
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index c038b6c..e540f4e 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -286,6 +286,9 @@ int pa__init(pa_module*m) {
         goto fail;
     }
 
+    pa_sink_new_data_set_create_node(&data, true);
+    pa_node_new_data_set_fallback_name_prefix(&data.node_data, "null");
+
     u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
     pa_sink_new_data_done(&data);
 
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index 4d82cc3..6e22ddb 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -290,6 +290,9 @@ int pa__init(pa_module *m) {
         goto fail;
     }
 
+    pa_sink_new_data_set_create_node(&data, true);
+    pa_node_new_data_set_fallback_name_prefix(&data.node_data, "pipe");
+
     u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
     pa_sink_new_data_done(&data);
 
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 2946cff..6586ea4 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -385,6 +385,9 @@ int pa__init(pa_module*m) {
     if ((u->auto_desc = !pa_proplist_contains(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION)))
         pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", pa_sink_get_description(master));
 
+    pa_sink_new_data_set_create_node(&sink_data, true);
+    pa_node_new_data_set_fallback_name_prefix(&sink_data.node_data, "remap");
+
     u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY));
     pa_sink_new_data_done(&sink_data);
 
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index b4fa734..0d02010 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -987,6 +987,9 @@ int pa__init(pa_module *m) {
             goto fail;
         }
 
+        pa_sink_new_data_set_create_node(&sink_new_data, true);
+        pa_node_new_data_set_fallback_name_prefix(&sink_new_data.node_data, "solaris");
+
         u->sink = pa_sink_new(m->core, &sink_new_data, PA_SINK_HARDWARE|PA_SINK_LATENCY);
         pa_sink_new_data_done(&sink_new_data);
 
diff --git a/src/modules/module-tunnel-sink-new.c b/src/modules/module-tunnel-sink-new.c
index cd7c39c..a83b3ad 100644
--- a/src/modules/module-tunnel-sink-new.c
+++ b/src/modules/module-tunnel-sink-new.c
@@ -480,6 +480,10 @@ int pa__init(pa_module *m) {
         pa_sink_new_data_done(&sink_data);
         goto fail;
     }
+
+    pa_sink_new_data_set_create_node(&sink_data, true);
+    pa_node_new_data_set_fallback_name_prefix(&sink_data.node_data, "tunnel");
+
     if (!(u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY | PA_SINK_DYNAMIC_LATENCY | PA_SINK_NETWORK))) {
         pa_log("Failed to create sink.");
         pa_sink_new_data_done(&sink_data);
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index 1ddfd25..2ad316b 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -2138,6 +2138,9 @@ int pa__init(pa_module*m) {
         goto fail;
     }
 
+    pa_sink_new_data_set_create_node(&data, true);
+    pa_node_new_data_set_fallback_name_prefix(&data.node_data, "tunnel");
+
     u->sink = pa_sink_new(m->core, &data, PA_SINK_NETWORK|PA_SINK_LATENCY);
     pa_sink_new_data_done(&data);
 
diff --git a/src/modules/module-virtual-sink.c b/src/modules/module-virtual-sink.c
index 710d914..53f8a17 100644
--- a/src/modules/module-virtual-sink.c
+++ b/src/modules/module-virtual-sink.c
@@ -538,6 +538,9 @@ int pa__init(pa_module*m) {
         pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION,
                          "Virtual Sink %s on %s", sink_data.name, pa_sink_get_description(master));
 
+    pa_sink_new_data_set_create_node(&sink_data, true);
+    pa_node_new_data_set_fallback_name_prefix(&sink_data.node_data, "virtual");
+
     u->sink = pa_sink_new(m->core, &sink_data, (master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY))
                                                | (use_volume_sharing ? PA_SINK_SHARE_VOLUME_WITH_MASTER : 0));
     pa_sink_new_data_done(&sink_data);
diff --git a/src/modules/module-virtual-source.c b/src/modules/module-virtual-source.c
index 9d7fd31..6f19dd3 100644
--- a/src/modules/module-virtual-source.c
+++ b/src/modules/module-virtual-source.c
@@ -630,6 +630,8 @@ int pa__init(pa_module*m) {
             goto fail;
         }
 
+        pa_sink_new_data_set_create_node(&sink_data, "virtual-uplink");
+
         u->sink = pa_sink_new(m->core, &sink_data, 0);  /* FIXME, sink has no capabilities */
         pa_sink_new_data_done(&sink_data);
 
diff --git a/src/modules/module-virtual-surround-sink.c b/src/modules/module-virtual-surround-sink.c
index a289b4a..6d5c6b2 100644
--- a/src/modules/module-virtual-surround-sink.c
+++ b/src/modules/module-virtual-surround-sink.c
@@ -640,6 +640,9 @@ int pa__init(pa_module*m) {
         pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION,
                          "Virtual Surround Sink %s on %s", sink_data.name, pa_sink_get_description(master));
 
+    pa_sink_new_data_set_create_node(&sink_data, true);
+    pa_node_new_data_set_fallback_name_prefix(&sink_data.node_data, "virtual-surround");
+
     u->sink = pa_sink_new(m->core, &sink_data, (master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY))
                                                | (use_volume_sharing ? PA_SINK_SHARE_VOLUME_WITH_MASTER : 0));
     pa_sink_new_data_done(&sink_data);
diff --git a/src/modules/module-waveout.c b/src/modules/module-waveout.c
index b274271..0ed43d7 100644
--- a/src/modules/module-waveout.c
+++ b/src/modules/module-waveout.c
@@ -634,6 +634,10 @@ int pa__init(pa_module *m) {
         pa_sink_new_data_set_channel_map(&data, &map);
         pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME));
         pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "WaveOut on %s", device_name);
+
+        pa_sink_new_data_set_create_node(&data, true);
+        pa_node_new_data_set_fallback_name_prefix(&data.node_data, "waveout");
+
         u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY);
         pa_sink_new_data_done(&data);
 
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index 03e51c8..998cb1d 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -1400,6 +1400,9 @@ int pa__init(pa_module*m) {
             goto fail;
         }
 
+        pa_sink_new_data_set_create_node(&sink_new_data, true);
+        pa_node_new_data_set_fallback_name_prefix(&sink_new_data.node_data, "oss");
+
         u->sink = pa_sink_new(m->core, &sink_new_data, PA_SINK_HARDWARE|PA_SINK_LATENCY);
         pa_sink_new_data_done(&sink_new_data);
         pa_xfree(name_buf);
diff --git a/src/modules/raop/module-raop-sink.c b/src/modules/raop/module-raop-sink.c
index 2d08645..e923b37 100644
--- a/src/modules/raop/module-raop-sink.c
+++ b/src/modules/raop/module-raop-sink.c
@@ -586,6 +586,9 @@ int pa__init(pa_module*m) {
         goto fail;
     }
 
+    pa_sink_new_data_set_create_node(&data, true);
+    pa_node_new_data_set_fallback_name_prefix(&data.node_data, "raop");
+
     u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
     pa_sink_new_data_done(&data);
 
diff --git a/src/modules/xen/module-xenpv-sink.c b/src/modules/xen/module-xenpv-sink.c
index 9dbd660..66d86cc 100644
--- a/src/modules/xen/module-xenpv-sink.c
+++ b/src/modules/xen/module-xenpv-sink.c
@@ -498,6 +498,9 @@ int pa__init(pa_module*m) {
         goto fail;
     }
 
+    pa_sink_new_data_set_create_node(&data, true);
+    pa_node_new_data_set_fallback_name_prefix(&data.node_data, "xen");
+
     u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
     pa_sink_new_data_done(&data);
 
diff --git a/todo b/todo
index edf66e5..8445c47 100644
--- a/todo
+++ b/todo
@@ -47,5 +47,4 @@ Backends for:
 - portaudio  (semi-done)
 
 Routing:
-- Create nodes for sinks.
 - Create nodes for sources.
-- 
1.8.3.1



More information about the pulseaudio-discuss mailing list