X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogin%2Flogind-seat-dbus.c;h=4da076e369af2efa5711c6f41e522e78894c3c55;hp=4bf9bf7b1ff84e2efeb2f7e80a1588a913430b13;hb=c6a818c82035da91e;hpb=5430f7f2bc7330f3088b894166bf3524a067e3d8 diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index 4bf9bf7b1..4da076e36 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -36,6 +36,8 @@ " \n" \ " \n" \ " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -133,7 +135,7 @@ static int bus_seat_append_sessions(DBusMessageIter *i, const char *property, vo return 0; } -static int bus_seat_append_multi_session(DBusMessageIter *i, const char *property, void *data) { +static int bus_seat_append_can_multi_session(DBusMessageIter *i, const char *property, void *data) { Seat *s = data; dbus_bool_t b; @@ -149,6 +151,38 @@ static int bus_seat_append_multi_session(DBusMessageIter *i, const char *propert return 0; } +static int bus_seat_append_can_tty(DBusMessageIter *i, const char *property, void *data) { + Seat *s = data; + dbus_bool_t b; + + assert(i); + assert(property); + assert(s); + + b = seat_can_tty(s); + + if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &b)) + return -ENOMEM; + + return 0; +} + +static int bus_seat_append_can_graphical(DBusMessageIter *i, const char *property, void *data) { + Seat *s = data; + dbus_bool_t b; + + assert(i); + assert(property); + assert(s); + + b = seat_can_graphical(s); + + if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &b)) + return -ENOMEM; + + return 0; +} + static int bus_seat_append_idle_hint(DBusMessageIter *i, const char *property, void *data) { Seat *s = data; dbus_bool_t b; @@ -210,7 +244,9 @@ static int get_seat_for_path(Manager *m, const char *path, Seat **_s) { static const BusProperty bus_login_seat_properties[] = { { "Id", bus_property_append_string, "s", offsetof(Seat, id), true }, { "ActiveSession", bus_seat_append_active, "(so)", 0 }, - { "CanMultiSession", bus_seat_append_multi_session, "b", 0 }, + { "CanMultiSession", bus_seat_append_can_multi_session, "b", 0 }, + { "CanTTY", bus_seat_append_can_tty, "b", 0 }, + { "CanGraphical", bus_seat_append_can_graphical, "b", 0 }, { "Sessions", bus_seat_append_sessions, "a(so)", 0 }, { "IdleHint", bus_seat_append_idle_hint, "b", 0 }, { "IdleSinceHint", bus_seat_append_idle_hint_since, "t", 0 }, @@ -274,7 +310,7 @@ static DBusHandlerResult seat_message_dispatch( } if (reply) { - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply);