summaryrefslogtreecommitdiff
path: root/gnome-unstable/gnome-control-center/systemd-fallback.patch
blob: a83629db680b54494bb41876796bc818c1d0667f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
diff -u -Nr gnome-control-center-3.3.91/configure.ac gnome-control-center-3.3.91-systemd-fallback/configure.ac
--- gnome-control-center-3.3.91/configure.ac	2012-03-05 20:30:32.000000000 +0100
+++ gnome-control-center-3.3.91-systemd-fallback/configure.ac	2012-03-07 00:06:01.752988448 +0100
@@ -56,7 +56,7 @@
               [with_systemd=$enableval],
               [with_systemd=no])
 if test "$with_systemd" = "yes" ; then
-  SYSTEMD=libsystemd-login
+  SYSTEMD="libsystemd-login libsystemd-daemon"
   AC_DEFINE(HAVE_SYSTEMD, 1, [Define to 1 if systemd is available])
 else
   SYSTEMD=
diff -u -Nr gnome-control-center-3.3.91/panels/user-accounts/um-user.c gnome-control-center-3.3.91-systemd-fallback/panels/user-accounts/um-user.c
--- gnome-control-center-3.3.91/panels/user-accounts/um-user.c	2012-03-05 15:04:55.000000000 +0100
+++ gnome-control-center-3.3.91-systemd-fallback/panels/user-accounts/um-user.c	2012-03-07 00:13:13.002755560 +0100
@@ -37,6 +37,11 @@
 
 #include <gio/gunixoutputstream.h>
 
+#ifdef HAVE_SYSTEMD
+#  include <systemd/sd-login.h>
+#  include <systemd/sd-daemon.h>
+#endif
+
 #include "um-user.h"
 #include "um-account-type.h"
 #include "um-utils.h"
@@ -1003,57 +1008,50 @@
         }
 }
 
-#ifdef HAVE_SYSTEMD
-
-#include <systemd/sd-login.h>
-
 gboolean
 um_user_is_logged_in (UmUser *user)
 {
-  int n_sessions;
-
-  n_sessions = sd_uid_get_sessions (um_user_get_uid (user), 0, NULL) > 0;
-
-  return n_sessions > 0;
-}
+#ifdef HAVE_SYSTEMD
+        if (sd_booted () > 0) {
+                int n_sessions;
 
-#else
+                n_sessions = sd_uid_get_sessions (um_user_get_uid (user), 0, NULL) > 0;
 
-gboolean
-um_user_is_logged_in (UmUser *user)
-{
-        GVariant *result;
-        GVariantIter *iter;
-        gint n_sessions;
-        GError *error = NULL;
+                return n_sessions > 0;
+        } else
+#endif
+        {
+                GVariant *result;
+                GVariantIter *iter;
+                gint n_sessions;
+                GError *error = NULL;
+
+                result = g_dbus_connection_call_sync (user->bus,
+                                                      "org.freedesktop.ConsoleKit",
+                                                      "/org/freedesktop/ConsoleKit/Manager",
+                                                      "org.freedesktop.ConsoleKit.Manager",
+                                                      "GetSessionsForUnixUser",
+                                                      g_variant_new ("(u)", um_user_get_uid (user)),
+                                                      G_VARIANT_TYPE ("(ao)"),
+                                                      G_DBUS_CALL_FLAGS_NONE,
+                                                      -1,
+                                                      NULL,
+                                                      &error);
+                if (!result) {
+                        g_warning ("GetSessionsForUnixUser failed: %s", error->message);
+                        g_error_free (error);
+                        return FALSE;
+                }
+          
+                g_variant_get (result, "(ao)", &iter);
+                n_sessions = g_variant_iter_n_children (iter);
+                g_variant_iter_free (iter);
+                g_variant_unref (result);
 
-        result = g_dbus_connection_call_sync (user->bus,
-                                              "org.freedesktop.ConsoleKit",
-                                              "/org/freedesktop/ConsoleKit/Manager",
-                                              "org.freedesktop.ConsoleKit.Manager",
-                                              "GetSessionsForUnixUser",
-                                              g_variant_new ("(u)", um_user_get_uid (user)),
-                                              G_VARIANT_TYPE ("(ao)"),
-                                              G_DBUS_CALL_FLAGS_NONE,
-                                              -1,
-                                              NULL,
-                                              &error);
-        if (!result) {
-                g_warning ("GetSessionsForUnixUser failed: %s", error->message);
-                g_error_free (error);
-                return FALSE;
+                return n_sessions > 0;
         }
-  
-        g_variant_get (result, "(ao)", &iter);
-        n_sessions = g_variant_iter_n_children (iter);
-        g_variant_iter_free (iter);
-        g_variant_unref (result);
-
-        return n_sessions > 0;
 }
 
-#endif
-
 void
 um_user_set_automatic_login (UmUser   *user,
                              gboolean  enabled)