X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-session-dbus.c;h=91037812896d3451a2e26876ebce75e4e760baa6;hb=490d99e9bf949a855ff9183465f2c265777a3272;hp=7f1b58072d6a9e7990bb34557b91f1b50862c55c;hpb=b69d29ce049f12d463a589e18561dd10ee8c09f1;p=elogind.git diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index 7f1b58072..910378128 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -53,12 +53,13 @@ " \n" \ " \n" \ " \n" \ - " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ - " \n" \ + " \n" \ " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -219,6 +220,22 @@ static int bus_session_append_default_cgroup(DBusMessageIter *i, const char *pro static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_session_append_type, session_type, SessionType); static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_session_append_class, session_class, SessionClass); +static int bus_session_append_state(DBusMessageIter *i, const char *property, void *data) { + Session *s = data; + const char *state; + + assert(i); + assert(property); + assert(s); + + state = session_state_to_string(session_get_state(s)); + + if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &state)) + return -ENOMEM; + + return 0; +} + static int get_session_for_path(Manager *m, const char *path, Session **_s) { Session *s; char *id; @@ -262,6 +279,7 @@ static const BusProperty bus_login_session_properties[] = { { "Type", bus_session_append_type, "s", offsetof(Session, type) }, { "Class", bus_session_append_class, "s", offsetof(Session, class) }, { "Active", bus_session_append_active, "b", 0 }, + { "State", bus_session_append_state, "s", 0 }, { "Controllers", bus_property_append_strv, "as", offsetof(Session, controllers), true }, { "ResetControllers", bus_property_append_strv, "as", offsetof(Session, reset_controllers), true }, { "KillProcesses", bus_property_append_bool, "b", offsetof(Session, kill_processes) },