summaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/alsa/module-alsa-card.c2
-rw-r--r--src/modules/module-null-sink.c21
-rw-r--r--src/modules/module-rygel-media-server.c66
-rw-r--r--src/modules/oss/module-oss.c11
4 files changed, 55 insertions, 45 deletions
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index 51d466e1..d894b9ce 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -135,7 +135,7 @@ static void enumerate_cb(
bonus += 20000;
}
- pa_log_info("Found output profile '%s'", t);
+ pa_log_info("Found profile '%s'", t);
p = pa_card_profile_new(n, t, sizeof(struct profile_data));
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index d9bab6bd..c0c2facf 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -54,12 +54,12 @@ PA_MODULE_DESCRIPTION("Clocked NULL sink");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
+ "sink_name=<name of sink> "
+ "sink_properties=<properties for the sink> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate> "
- "sink_name=<name of sink> "
- "channel_map=<channel map> "
- "description=<description for the sink>");
+ "channels=<number of channels> "
+ "channel_map=<channel map>");
#define DEFAULT_SINK_NAME "null"
#define BLOCK_USEC (PA_USEC_PER_SEC * 2)
@@ -78,12 +78,13 @@ struct userdata {
};
static const char* const valid_modargs[] = {
- "rate",
+ "sink_name",
+ "sink_properties",
"format",
+ "rate",
"channels",
- "sink_name",
"channel_map",
- "description",
+ "description", /* supported for compatibility reasons, made redundant by sink_properties= */
NULL
};
@@ -289,6 +290,12 @@ int pa__init(pa_module*m) {
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, pa_modargs_get_value(ma, "description", "Null Output"));
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CLASS, "abstract");
+ if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) {
+ pa_log("Invalid properties.");
+ pa_sink_new_data_done(&data);
+ goto fail;
+ }
+
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-rygel-media-server.c b/src/modules/module-rygel-media-server.c
index 080b612f..4c02e958 100644
--- a/src/modules/module-rygel-media-server.c
+++ b/src/modules/module-rygel-media-server.c
@@ -57,18 +57,18 @@ PA_MODULE_USAGE(
/* This implements http://live.gnome.org/Rygel/MediaServerSpec */
-#define SERVICE_NAME "org.Rygel.MediaServer1.PulseAudio"
+#define SERVICE_NAME "org.gnome.UPnP.MediaServer1.PulseAudio"
-#define OBJECT_ROOT "/org/Rygel/MediaServer1/PulseAudio"
-#define OBJECT_SINKS "/org/Rygel/MediaServer1/PulseAudio/Sinks"
-#define OBJECT_SOURCES "/org/Rygel/MediaServer1/PulseAudio/Sources"
+#define OBJECT_ROOT "/org/gnome/UPnP/MediaServer1/PulseAudio"
+#define OBJECT_SINKS "/org/gnome/UPnP/MediaServer1/PulseAudio/Sinks"
+#define OBJECT_SOURCES "/org/gnome/UPnP/MediaServer1/PulseAudio/Sources"
#define CONTAINER_INTROSPECT_XML_PREFIX \
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE \
"<node>" \
" <!-- If you are looking for documentation make sure to check out" \
" http://live.gnome.org/Rygel/MediaServerSpec -->" \
- " <interface name=\"org.Rygel.MediaContainer1\">" \
+ " <interface name=\"org.gnome.UPnP.MediaContainer1\">" \
" <signal name=\"Updated\">" \
" <arg name=\"path\" type=\"o\"/>" \
" </signal>" \
@@ -77,7 +77,7 @@ PA_MODULE_USAGE(
" <property name=\"Containers\" type=\"ao\" access=\"read\"/>" \
" <property name=\"ContainerCount\" type=\"u\" access=\"read\"/>" \
" </interface>" \
- " <interface name=\"org.Rygel.MediaObject1\">" \
+ " <interface name=\"org.gnome.UPnP.MediaObject1\">" \
" <property name=\"Parent\" type=\"s\" access=\"read\"/>" \
" <property name=\"DisplayName\" type=\"s\" access=\"read\"/>" \
" </interface>" \
@@ -112,12 +112,12 @@ PA_MODULE_USAGE(
"<node>" \
" <!-- If you are looking for documentation make sure to check out" \
" http://live.gnome.org/Rygel/MediaProviderSpec -->" \
- " <interface name=\"org.Rygel.MediaItem1\">" \
+ " <interface name=\"org.gnome.UPnP.MediaItem1\">" \
" <property name=\"URLs\" type=\"as\" access=\"read\"/>" \
" <property name=\"MIMEType\" type=\"s\" access=\"read\"/>" \
" <property name=\"Type\" type=\"s\" access=\"read\"/>" \
" </interface>" \
- " <interface name=\"org.Rygel.MediaObject1\">" \
+ " <interface name=\"org.gnome.UPnP.MediaObject1\">" \
" <property name=\"Parent\" type=\"s\" access=\"read\"/>" \
" <property name=\"DisplayName\" type=\"s\" access=\"read\"/>" \
" </interface>" \
@@ -174,7 +174,7 @@ static void send_signal(struct userdata *u, pa_source *s) {
else
parent = OBJECT_SOURCES;
- pa_assert_se(m = dbus_message_new_signal(parent, "org.Rygel.MediaContainer1", "Updated"));
+ pa_assert_se(m = dbus_message_new_signal(parent, "org.gnome.UPnP.MediaContainer1", "Updated"));
pa_assert_se(dbus_connection_send(pa_dbus_connection_get(u->bus), m, NULL));
dbus_message_unref(m);
@@ -349,23 +349,23 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
pa_assert(u);
- if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Containers")) {
+ if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "Containers")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object_array(r, NULL, (const char**) array_root_containers, PA_ELEMENTSOF(array_root_containers));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "ContainerCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_root_containers));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Items")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "Items")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object_array(r, NULL, array_no_children, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "ItemCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaContainer1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -378,15 +378,15 @@ static DBusHandlerResult root_handler(DBusConnection *c, DBusMessage *m, void *u
append_property_dict_entry_unsigned(r, &sub, "ItemCount", PA_ELEMENTSOF(array_no_children));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "Parent")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object(r, NULL, OBJECT_ROOT);
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, u->display_name);
- } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaObject1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -509,15 +509,15 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
/* Container nodes */
- if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Containers")) {
+ if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "Containers")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object_array(r, NULL, array_no_children, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ContainerCount")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "ContainerCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL, PA_ELEMENTSOF(array_no_children));
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "Items")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "Items")) {
char ** array;
unsigned n;
@@ -528,14 +528,14 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
free_child_array(array, n);
- } else if (message_is_property_get(m, "org.Rygel.MediaContainer1", "ItemCount")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaContainer1", "ItemCount")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_unsigned(r, NULL,
pa_streq(path, OBJECT_SINKS) ?
pa_idxset_size(u->core->sinks) :
pa_idxset_size(u->core->sources));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaContainer1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaContainer1")) {
DBusMessageIter iter, sub;
char **array;
unsigned n;
@@ -557,11 +557,11 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "Parent")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object(r, NULL, OBJECT_ROOT);
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r,
NULL,
@@ -569,7 +569,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
_("Output Devices") :
_("Input Devices"));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaObject1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -632,15 +632,15 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
if (!sink && !source)
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- if (message_is_property_get(m, "org.Rygel.MediaObject1", "Parent")) {
+ if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "Parent")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_object(r, NULL, sink ? OBJECT_SINKS : OBJECT_SOURCES);
- } else if (message_is_property_get(m, "org.Rygel.MediaObject1", "DisplayName")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaObject1", "DisplayName")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
- } else if (message_is_property_get_all(m, "org.Rygel.MediaObject1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaObject1")) {
DBusMessageIter iter, sub;
pa_assert_se(r = dbus_message_new_method_return(m));
@@ -651,11 +651,11 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
append_property_dict_entry_string(r, &sub, "DisplayName", pa_strna(pa_proplist_gets(sink ? sink->proplist : source->proplist, PA_PROP_DEVICE_DESCRIPTION)));
pa_assert_se(dbus_message_iter_close_container(&iter, &sub));
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "Type")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaItem1", "Type")) {
pa_assert_se(r = dbus_message_new_method_return(m));
append_variant_string(r, NULL, "audio");
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "MIMEType")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaItem1", "MIMEType")) {
char *t;
if (sink)
@@ -667,7 +667,7 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
append_variant_string(r, NULL, t);
pa_xfree(t);
- } else if (message_is_property_get(m, "org.Rygel.MediaItem1", "URLs")) {
+ } else if (message_is_property_get(m, "org.gnome.UPnP.MediaItem1", "URLs")) {
DBusMessageIter iter, sub, array;
char *url;
@@ -685,10 +685,10 @@ static DBusHandlerResult sinks_and_sources_handler(DBusConnection *c, DBusMessag
pa_xfree(url);
- } else if (message_is_property_get_all(m, "org.Rygel.MediaItem1")) {
+ } else if (message_is_property_get_all(m, "org.gnome.UPnP.MediaItem1")) {
DBusMessageIter iter, sub, dict, variant, array;
char *url, *t;
- const char *un = "urls";
+ const char *un = "URLs";
pa_assert_se(r = dbus_message_new_method_return(m));
dbus_message_iter_init_append(r, &iter);
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index ab26137f..d6f549cd 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -477,6 +477,7 @@ static void build_pollfd(struct userdata *u) {
pollfd->revents = 0;
}
+/* Called from IO context */
static int suspend(struct userdata *u) {
pa_assert(u);
pa_assert(u->fd >= 0);
@@ -526,6 +527,7 @@ static int suspend(struct userdata *u) {
return 0;
}
+/* Called from IO context */
static int unsuspend(struct userdata *u) {
int m;
pa_sample_spec ss, *ss_original;
@@ -616,10 +618,10 @@ static int unsuspend(struct userdata *u) {
build_pollfd(u);
- if (u->sink)
- pa_sink_get_volume(u->sink, TRUE, FALSE);
- if (u->source)
- pa_source_get_volume(u->source, TRUE);
+ if (u->sink && u->sink->get_volume)
+ u->sink->get_volume(u->sink);
+ if (u->source && u->source->get_volume)
+ u->source->get_volume(u->source);
pa_log_info("Resumed successfully...");
@@ -631,6 +633,7 @@ fail:
return -1;
}
+/* Called from IO context */
static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SINK(o)->userdata;
int ret;