summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTanu Kaskinen <tanu.kaskinen@digia.com>2011-03-11 13:40:34 +0200
committerTanu Kaskinen <tanu.kaskinen@digia.com>2011-03-11 13:40:34 +0200
commit68e6340394d66d9d41bf094440d950dd62adba62 (patch)
treeaa142227b322a484b83c9081d67e2b5362f41a38 /src
parent6c5e3af27591aa5ebbb332b80b6809cb320f7ae9 (diff)
dbus: Always accept mono volumes when setting device or stream volume.
pa_sink_set_volume() and friends accept mono volumes too, so no need to impose unneeded restrictions in the D-Bus API.
Diffstat (limited to 'src')
-rw-r--r--src/modules/dbus/iface-device.c9
-rw-r--r--src/modules/dbus/iface-stream.c9
2 files changed, 8 insertions, 10 deletions
diff --git a/src/modules/dbus/iface-device.c b/src/modules/dbus/iface-device.c
index a8652df9..c5ba88e0 100644
--- a/src/modules/dbus/iface-device.c
+++ b/src/modules/dbus/iface-device.c
@@ -422,21 +422,20 @@ static void handle_set_volume(DBusConnection *conn, DBusMessage *msg, DBusMessag
pa_assert(iter);
pa_assert(d);
- pa_cvolume_init(&new_vol);
-
device_channels = (d->type == DEVICE_TYPE_SINK) ? d->sink->channel_map.channels : d->source->channel_map.channels;
- new_vol.channels = device_channels;
-
dbus_message_iter_recurse(iter, &array_iter);
dbus_message_iter_get_fixed_array(&array_iter, &volume, &n_volume_entries);
- if (n_volume_entries != device_channels) {
+ if (n_volume_entries != device_channels && n_volume_entries != 1) {
pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS,
"Expected %u volume entries, got %i.", device_channels, n_volume_entries);
return;
}
+ pa_cvolume_init(&new_vol);
+ new_vol.channels = n_volume_entries;
+
for (i = 0; i < n_volume_entries; ++i) {
if (!PA_VOLUME_IS_VALID(volume[i])) {
pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Too large volume value: %u", volume[i]);
diff --git a/src/modules/dbus/iface-stream.c b/src/modules/dbus/iface-stream.c
index 6b46fa91..e3464fdf 100644
--- a/src/modules/dbus/iface-stream.c
+++ b/src/modules/dbus/iface-stream.c
@@ -381,21 +381,20 @@ static void handle_set_volume(DBusConnection *conn, DBusMessage *msg, DBusMessag
return;
}
- pa_cvolume_init(&new_vol);
-
stream_channels = s->sink_input->channel_map.channels;
- new_vol.channels = stream_channels;
-
dbus_message_iter_recurse(iter, &array_iter);
dbus_message_iter_get_fixed_array(&array_iter, &volume, &n_volume_entries);
- if (n_volume_entries != stream_channels) {
+ if (n_volume_entries != stream_channels && n_volume_entries != 1) {
pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS,
"Expected %u volume entries, got %u.", stream_channels, n_volume_entries);
return;
}
+ pa_cvolume_init(&new_vol);
+ new_vol.channels = n_volume_entries;
+
for (i = 0; i < n_volume_entries; ++i) {
if (!PA_VOLUME_IS_VALID(volume[i])) {
pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume: %u", volume[i]);