summaryrefslogtreecommitdiffstats
path: root/src/modules/dbus
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2009-08-17 16:53:58 +0300
committerTanu Kaskinen <tanuk@iki.fi>2009-08-17 16:53:58 +0300
commitb52871517944d55cec549af362398a5012f0b8b8 (patch)
tree0fa914f022efad6389d277600b8353b7b6161fca /src/modules/dbus
parentbce6af18a3cc761375acebe589c821fc2abf9d1e (diff)
dbusiface-device: Fix argument reading in handle_suspend().
Diffstat (limited to 'src/modules/dbus')
-rw-r--r--src/modules/dbus/iface-device.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/modules/dbus/iface-device.c b/src/modules/dbus/iface-device.c
index 078ae74a..2e5940c3 100644
--- a/src/modules/dbus/iface-device.c
+++ b/src/modules/dbus/iface-device.c
@@ -923,13 +923,19 @@ static void handle_get_all(DBusConnection *conn, DBusMessage *msg, void *userdat
static void handle_suspend(DBusConnection *conn, DBusMessage *msg, void *userdata) {
pa_dbusiface_device *d = userdata;
dbus_bool_t suspend = FALSE;
+ DBusError error;
pa_assert(conn);
pa_assert(msg);
pa_assert(d);
- if (pa_dbus_get_basic_set_property_arg(conn, msg, DBUS_TYPE_BOOLEAN, &suspend) < 0)
+ dbus_error_init(&error);
+
+ if (!dbus_message_get_args(msg, &error, DBUS_TYPE_BOOLEAN, &suspend, DBUS_TYPE_INVALID)) {
+ pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "%s", error.message);
+ dbus_error_free(&error);
return;
+ }
if ((d->type == DEVICE_TYPE_SINK) && (pa_sink_suspend(d->sink, suspend, PA_SUSPEND_USER) < 0)) {
pa_dbus_send_error(conn, msg, DBUS_ERROR_FAILED, "Internal error in PulseAudio: pa_sink_suspend() failed.");