diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2014-05-16 10:15:39 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2014-05-16 10:15:39 +1200 |
commit | eb844e89491c985b734ebad28cfb6a6a04ec147c (patch) | |
tree | a076809c8203d65d9031f5905c68f217af1eef1c | |
parent | 564c66a68df282423b643d386a32e2cfcb2a0b56 (diff) | |
parent | eeac8a385a234aa7ee2efda786a101dfc9c59a63 (diff) | |
download | lightdm-eb844e89491c985b734ebad28cfb6a6a04ec147c.tar.gz |
DBus-activate logind
-rw-r--r-- | src/login1.c | 38 | ||||
-rw-r--r-- | tests/src/libsystem.c | 4 |
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); |