diff --git a/config/config.c b/config/config.c index 4861d9ead..9b38faf49 100644 --- a/config/config.c +++ b/config/config.c @@ -308,12 +308,15 @@ configMessage(DBusConnection *connection, DBusMessage *message, void *closure) if (ret != BadDrawable && ret != BadAlloc) { if (!strlen(dbus_message_get_signature(reply))) + { + ret = -ret; /* return errors as negative numbers */ if (!dbus_message_iter_append_basic(&r_iter, DBUS_TYPE_INT32, &ret)) { ErrorF("[config] couldn't append to iterator\n"); dbus_message_unref(reply); dbus_error_free(&error); return DBUS_HANDLER_RESULT_HANDLED; } + } if (!dbus_connection_send(bus, reply, NULL)) ErrorF("[config] failed to send reply\n"); diff --git a/config/dbus-api b/config/dbus-api index cada792f5..654c22bec 100644 --- a/config/dbus-api +++ b/config/dbus-api @@ -15,25 +15,23 @@ org.x.config.input: Option names beginning with _ are not allowed; they are reserved for internal use. - Returns one int32, which is an X Status, as defined in X.h. If - everything is successful, Success will be returned. BadMatch will - be returned if the options given do not match any device. BadValue - is returned for a malformed message. + Returns one signed int32, which is the device id of the new device. + If the return value is a negative number, it represents the X + Status, as defined in X.h. BadMatch will be returned if the options + given do not match any device. BadValue is returned for a malformed + message. (Example: 8 is new device id 8. -8 is BadMatch.) Notably, BadAlloc is never returned: the server internally signals to D-BUS that the attempt failed for lack of memory. - The return does not notify the client of which devices were created - or modified as a result of this request: clients are encouraged to - listen for the XInput DevicePresenceNotify event to monitor changes - in the device list. - org.x.config.input.remove: Takes one int32 argument, which is the device ID to remove, i.e.: i is the signature. - Same return values as org.x.config.input.add. + + Returns one signed int32 which represents an X status as defined in + X.h. See org.x.config.input.add. Error codes are negative numbers. org.x.config.input.listDevices: - Lists the currently active devices. + Lists the currently active devices. No argument. Return value is sequence of ...