[pulseaudio-discuss] [PATCH 10/21] sink-input, source-output: Add pa_sink_input/source_output_get_description()

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Wed Jun 19 08:40:07 PDT 2013


---
 src/pulsecore/sink-input.c    | 21 +++++++++++++++++++++
 src/pulsecore/sink-input.h    |  2 ++
 src/pulsecore/source-output.c | 21 +++++++++++++++++++++
 src/pulsecore/source-output.h |  4 +++-
 4 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 8666c60..fab994d 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -32,6 +32,7 @@
 #include <pulse/util.h>
 #include <pulse/internal.h>
 
+#include <pulsecore/i18n.h>
 #include <pulsecore/mix.h>
 #include <pulsecore/core-subscribe.h>
 #include <pulsecore/log.h>
@@ -823,6 +824,26 @@ void pa_sink_input_put(pa_sink_input *i) {
     pa_sink_update_status(i->sink);
 }
 
+/* Called from the main thread. */
+const char *pa_sink_input_get_description(pa_sink_input *i) {
+    const char *description;
+
+    pa_assert(i);
+
+    description = pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME);
+
+    /* XXX: It would be nice to be able to assume that PA_PROP_MEDIA_NAME is
+     * always set. It certainly makes sense to require that every stream should
+     * have a description. The problem is that clients can unset the property
+     * with pa_stream_proplist_update(). Perhaps we should check after each
+     * client-side proplist update whether MEDIA_NAME is still set, and if not,
+     * recreate the property automatically? */
+    if (!description)
+        description = _("(unnamed stream)");
+
+    return description;
+}
+
 /* Called from main context */
 void pa_sink_input_kill(pa_sink_input*i) {
     pa_sink_input_assert_ref(i);
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index 47bdaed..2747ff0 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -362,6 +362,8 @@ size_t pa_sink_input_get_max_request(pa_sink_input *i);
 
 /* Callable by everyone from main thread*/
 
+const char *pa_sink_input_get_description(pa_sink_input *i);
+
 /* External code may request disconnection with this function */
 void pa_sink_input_kill(pa_sink_input*i);
 
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 6e56bd3..e50aef2 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -32,6 +32,7 @@
 #include <pulse/util.h>
 #include <pulse/internal.h>
 
+#include <pulsecore/i18n.h>
 #include <pulsecore/mix.h>
 #include <pulsecore/core-subscribe.h>
 #include <pulsecore/log.h>
@@ -684,6 +685,26 @@ void pa_source_output_put(pa_source_output *o) {
     pa_source_update_status(o->source);
 }
 
+/* Called from the main thread. */
+const char *pa_source_output_get_description(pa_source_output *o) {
+    const char *description;
+
+    pa_assert(o);
+
+    description = pa_proplist_gets(o->proplist, PA_PROP_MEDIA_NAME);
+
+    /* XXX: It would be nice to be able to assume that PA_PROP_MEDIA_NAME is
+     * always set. It certainly makes sense to require that every stream should
+     * have a description. The problem is that clients can unset the property
+     * with pa_stream_proplist_update(). Perhaps we should check after each
+     * client-side proplist update whether MEDIA_NAME is still set, and if not,
+     * recreate the property automatically? */
+    if (!description)
+        description = _("(unnamed stream)");
+
+    return description;
+}
+
 /* Called from main context */
 void pa_source_output_kill(pa_source_output*o) {
     pa_source_output_assert_ref(o);
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index e60430f..fd95c3e 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -305,7 +305,9 @@ int pa_source_output_update_rate(pa_source_output *o);
 
 size_t pa_source_output_get_max_rewind(pa_source_output *o);
 
-/* Callable by everyone */
+/* Callable by everyone from the main thread. */
+
+const char *pa_source_output_get_description(pa_source_output *o);
 
 /* External code may request disconnection with this function */
 void pa_source_output_kill(pa_source_output*o);
-- 
1.8.1.2



More information about the pulseaudio-discuss mailing list