From 68e6340394d66d9d41bf094440d950dd62adba62 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Fri, 11 Mar 2011 13:40:34 +0200 Subject: 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. --- src/modules/dbus/iface-device.c | 9 ++++----- src/modules/dbus/iface-stream.c | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) (limited to 'src/modules') 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]); -- cgit