summaryrefslogtreecommitdiff
path: root/src/logind-session-dbus.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-07-09 02:58:05 +0200
committerLennart Poettering <lennart@poettering.net>2011-07-13 19:59:28 +0200
commit88e3dc903bd543a74b8699c1575b0da9eeab24a2 (patch)
treea2a1995d00afef84d404b5a0fe2e233d202b96c1 /src/logind-session-dbus.c
parentd4b36d99f1b3821243d3f122128623dd2653b1cf (diff)
loginctl: implement more verbs
Diffstat (limited to 'src/logind-session-dbus.c')
-rw-r--r--src/logind-session-dbus.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/src/logind-session-dbus.c b/src/logind-session-dbus.c
index eca33e5e24..5fe391cca4 100644
--- a/src/logind-session-dbus.c
+++ b/src/logind-session-dbus.c
@@ -283,17 +283,8 @@ static DBusHandlerResult session_message_dispatch(
} else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Session", "Lock") ||
dbus_message_is_method_call(message, "org.freedesktop.login1.Session", "Unlock")) {
- bool b;
- DBusMessage *sig;
- sig = dbus_message_new_signal(dbus_message_get_path(message), "org.freedesktop.login1.Session", dbus_message_get_member(message));
- if (!sig)
- goto oom;
-
- b = dbus_connection_send(connection, sig, NULL);
- dbus_message_unref(sig);
-
- if (!b)
+ if (session_send_signal(s, streq(dbus_message_get_member(message), "Lock")) < 0)
goto oom;
reply = dbus_message_new_method_return(message);
@@ -460,3 +451,29 @@ finish:
return r;
}
+
+int session_send_lock(Session *s, bool lock) {
+ DBusMessage *m;
+ bool b;
+ char *p;
+
+ assert(s);
+
+ p = session_bus_path(s);
+ if (!p)
+ return -ENOMEM;
+
+ m = dbus_message_new_signal(p, "org.freedesktop.login1.Session", lock ? "Lock" : "Unlock");
+ free(p);
+
+ if (!m)
+ return -ENOMEM;
+
+ b = dbus_connection_send(s->manager->bus, m, NULL);
+ dbus_message_unref(m);
+
+ if (!b)
+ return -ENOMEM;
+
+ return 0;
+}