xserver: Branch 'master' - 2 commits
Peter Hutterer
whot at kemper.freedesktop.org
Thu Apr 19 12:35:49 EEST 2007
config/config.c | 36 +++++++++++++++++++++++-------------
config/dbus-api | 22 ++++++++++++----------
2 files changed, 35 insertions(+), 23 deletions(-)
New commits:
diff-tree e1f0b3e70b696d7ea4cf9e6ed30d751e7fdbc577 (from c6972c893359f8fa7631ae674330f3f4f7010ba0)
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date: Thu Apr 19 12:00:24 2007 +0930
config: Return errors as negative numbers, device ids as positive numbers.
Update dbus-api documentation.
diff --git a/config/config.c b/config/config.c
index 4861d9e..9b38faf 100644
--- a/config/config.c
+++ b/config/config.c
@@ -308,12 +308,15 @@ configMessage(DBusConnection *connection
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 cada792..654c22b 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 <id> <name> <id> <name> ...
diff-tree c6972c893359f8fa7631ae674330f3f4f7010ba0 (from 999b681cf3973af4191506e49cde06963b11a774)
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date: Wed Apr 18 12:10:05 2007 +0930
Change dbus 'listDevices' call to not require an argument.
Update dbus-api documentation, plug memory leak on dbus reply error.
diff --git a/config/config.c b/config/config.c
index 9828091..4861d9e 100644
--- a/config/config.c
+++ b/config/config.c
@@ -280,11 +280,6 @@ configMessage(DBusConnection *connection
if (strcmp(dbus_message_get_interface(message),
"org.x.config.input") == 0) {
- if (!dbus_message_iter_init(message, &iter)) {
- ErrorF("[config] failed to init iterator\n");
- dbus_error_free(&error);
- return DBUS_HANDLER_RESULT_NEED_MEMORY; /* ?? */
- }
if (!(reply = dbus_message_new_method_return(message))) {
ErrorF("[config] failed to create the reply message\n");
@@ -292,18 +287,30 @@ configMessage(DBusConnection *connection
return DBUS_HANDLER_RESULT_NEED_MEMORY;
}
dbus_message_iter_init_append(reply, &r_iter);
-
- if (strcmp(dbus_message_get_member(message), "add") == 0)
- ret = configAddDevice(message, &iter, reply, &r_iter, &error);
- else if (strcmp(dbus_message_get_member(message), "remove") == 0)
- ret = configRemoveDevice(message, &iter, &error);
- else if (strcmp(dbus_message_get_member(message), "listDevices") == 0)
- ret = configListDevices(message, &iter, reply, &r_iter, &error);
- if (ret != BadDrawable && ret != BadAlloc) {
+ /* listDevices doesn't take any arguments */
+ if (strcmp(dbus_message_get_member(message), "listDevices") == 0)
+ ret = configListDevices(message, NULL, reply, &r_iter, &error);
+ else
+ {
+ if (!dbus_message_iter_init(message, &iter)) {
+ ErrorF("[config] failed to init iterator\n");
+ dbus_message_unref(reply);
+ dbus_error_free(&error);
+ return DBUS_HANDLER_RESULT_NEED_MEMORY; /* ?? */
+ }
+
+ if (strcmp(dbus_message_get_member(message), "add") == 0)
+ ret = configAddDevice(message, &iter, reply, &r_iter, &error);
+ else if (strcmp(dbus_message_get_member(message), "remove") == 0)
+ ret = configRemoveDevice(message, &iter, &error);
+ }
+
+ if (ret != BadDrawable && ret != BadAlloc) {
if (!strlen(dbus_message_get_signature(reply)))
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;
}
diff --git a/config/dbus-api b/config/dbus-api
index 53bb3e4..cada792 100644
--- a/config/dbus-api
+++ b/config/dbus-api
@@ -33,3 +33,7 @@ org.x.config.input:
i
is the signature.
Same return values as org.x.config.input.add.
+
+ org.x.config.input.listDevices:
+ Lists the currently active devices.
+ Return value is sequence of <id> <name> <id> <name> ...
More information about the xorg-commit
mailing list