From: Michael Terry Date: Wed, 14 May 2014 20:19:00 +0000 (-0400) Subject: Just create proxy and ask for owner rather than manually calling StartServiceByName... X-Git-Url: http://rtime.felk.cvut.cz/gitweb/sojka/lightdm.git/commitdiff_plain/444c8024c7a70a31375f4e1112fb98e71daa2ddd Just create proxy and ask for owner rather than manually calling StartServiceByName, to account for versions of login1 that don't have an autostart file, like our test version --- diff --git a/src/login1.c b/src/login1.c index 60eec457..cd780c58 100644 --- a/src/login1.c +++ b/src/login1.c @@ -15,37 +15,30 @@ #include "login1.h" static gboolean -start_login1 (void) +check_login1 (void) { - GDBusConnection *bus; - GVariant *result; - guint32 success; - - bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); - if (!bus) + 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; - result = g_dbus_connection_call_sync (bus, - "org.freedesktop.DBus", - "/org/freedesktop/DBus", - "org.freedesktop.DBus", - "StartServiceByName", - g_variant_new ("(su)", - "org.freedesktop.login1", - 0), - G_VARIANT_TYPE ("(u)"), - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, - NULL); - g_object_unref (bus); - if (!result) - return FALSE; + owner = g_dbus_proxy_get_name_owner (proxy); + g_object_unref (proxy); - g_variant_get (result, "(u)", &success); - g_variant_unref (result); + success = (owner != NULL); + g_free (owner); - return success == 1 || success == 2; // started or already existed + return success; } gboolean @@ -57,7 +50,7 @@ login1_is_running (void) if (!have_checked) { have_checked = TRUE; - is_running = start_login1(); + is_running = check_login1(); } return is_running; 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);