follow consolekit's recent D-Bus API change, original patch from William Jon McCan

This commit is contained in:
Lennart Poettering 2008-07-23 16:59:55 +02:00
parent c415479a55
commit 32e93d5c89

View file

@ -71,7 +71,7 @@ struct userdata {
static void add_session(struct userdata *u, const char *id) { static void add_session(struct userdata *u, const char *id) {
DBusError error; DBusError error;
DBusMessage *m = NULL, *reply = NULL; DBusMessage *m = NULL, *reply = NULL;
int32_t uid; uint32_t uid;
struct session *session; struct session *session;
char *t; char *t;
@ -92,10 +92,12 @@ static void add_session(struct userdata *u, const char *id) {
goto fail; goto fail;
} }
/* FIXME: Why is this in int32? and not an uint32? */ /* CK 0.3 this changed from int32 to uint32 */
if (!dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) { if (!dbus_message_get_args(reply, &error, DBUS_TYPE_UINT32, &uid, DBUS_TYPE_INVALID)) {
pa_log("Failed to parse GetUnixUser() result: %s: %s", error.name, error.message); if (!dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INVALID)) {
goto fail; pa_log("Failed to parse GetUnixUser() result: %s: %s", error.name, error.message);
goto fail;
}
} }
/* We only care about our own sessions */ /* We only care about our own sessions */
@ -163,18 +165,24 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
if (dbus_message_is_signal(message, "org.freedesktop.ConsoleKit.Seat", "SessionAdded")) { if (dbus_message_is_signal(message, "org.freedesktop.ConsoleKit.Seat", "SessionAdded")) {
if (!dbus_message_get_args(message, &error, DBUS_TYPE_STRING, &path, DBUS_TYPE_INVALID) || dbus_error_is_set(&error)) { /* CK API changed to match spec in 0.3 */
pa_log_error("Failed to parse SessionAdded message: %s: %s", error.name, error.message); if (!dbus_message_get_args(message, &error, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) {
goto finish; if (!dbus_message_get_args(message, &error, DBUS_TYPE_STRING, &path, DBUS_TYPE_INVALID)) {
pa_log_error("Failed to parse SessionAdded message: %s: %s", error.name, error.message);
goto finish;
}
} }
add_session(u, path); add_session(u, path);
} else if (dbus_message_is_signal(message, "org.freedesktop.ConsoleKit.Seat", "SessionRemoved")) { } else if (dbus_message_is_signal(message, "org.freedesktop.ConsoleKit.Seat", "SessionRemoved")) {
if (!dbus_message_get_args(message, &error, DBUS_TYPE_STRING, &path, DBUS_TYPE_INVALID) || dbus_error_is_set(&error)) { /* CK API changed to match spec in 0.3 */
pa_log_error("Failed to parse SessionRemoved message: %s: %s", error.name, error.message); if (!dbus_message_get_args(message, &error, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) {
goto finish; if (!dbus_message_get_args(message, &error, DBUS_TYPE_STRING, &path, DBUS_TYPE_INVALID)) {
pa_log_error("Failed to parse SessionRemoved message: %s: %s", error.name, error.message);
goto finish;
}
} }
remove_session(u, path); remove_session(u, path);