summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2014-05-16 10:15:39 +1200
committerRobert Ancell <robert.ancell@canonical.com>2014-05-16 10:15:39 +1200
commiteb844e89491c985b734ebad28cfb6a6a04ec147c (patch)
treea076809c8203d65d9031f5905c68f217af1eef1c
parent564c66a68df282423b643d386a32e2cfcb2a0b56 (diff)
parenteeac8a385a234aa7ee2efda786a101dfc9c59a63 (diff)
downloadlightdm-eb844e89491c985b734ebad28cfb6a6a04ec147c.tar.gz
DBus-activate logind
-rw-r--r--src/login1.c38
-rw-r--r--tests/src/libsystem.c4
2 files changed, 37 insertions, 5 deletions
diff --git a/src/login1.c b/src/login1.c
index 7f858d63..cd780c58 100644
--- a/src/login1.c
+++ b/src/login1.c
@@ -14,10 +14,46 @@
#include "login1.h"
+static gboolean
+check_login1 (void)
+{
+ GDBusProxy *proxy;
+ gchar *owner;
+ gboolean success;
+
+ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
+ NULL,
+ "org.freedesktop.login1",
+ "/org/freedesktop/login1",
+ "org.freedesktop.login1.Manager",
+ NULL,
+ NULL);
+ if (!proxy)
+ return FALSE;
+
+ owner = g_dbus_proxy_get_name_owner (proxy);
+ g_object_unref (proxy);
+
+ success = (owner != NULL);
+ g_free (owner);
+
+ return success;
+}
+
gboolean
login1_is_running (void)
{
- return access ("/run/systemd/seats/", F_OK) >= 0;
+ static gboolean have_checked = FALSE;
+ static gboolean is_running = FALSE;
+
+ if (!have_checked)
+ {
+ have_checked = TRUE;
+ is_running = check_login1();
+ }
+
+ return is_running;
}
gchar *
diff --git a/tests/src/libsystem.c b/tests/src/libsystem.c
index 0c25b8c4..83f2467d 100644
--- a/tests/src/libsystem.c
+++ b/tests/src/libsystem.c
@@ -331,10 +331,6 @@ access (const char *pathname, int mode)
gchar *new_path = NULL;
int ret;
- /* Look like systemd is always running */
- if (strcmp (pathname, "/run/systemd/seats/") == 0)
- return 1;
-
_access = (int (*)(const char *pathname, int mode)) dlsym (RTLD_NEXT, "access");
new_path = redirect_path (pathname);