Add optional systemd support

When configured with --enable-systemd, this patch makes
the user panel use systemd for session tracking instead
of ConsoleKit.

https://bugzilla.gnome.org/show_bug.cgi?id=666573
This commit is contained in:
Matthias Clasen 2012-01-13 13:16:41 -05:00
parent f3592ce32a
commit b294b10324
2 changed files with 30 additions and 1 deletions

View file

@ -55,6 +55,17 @@ CPPFLAGS=$savecppflags
AC_CHECK_LIB(m, floor)
AC_ARG_ENABLE([systemd],
AS_HELP_STRING([--enable-systemd], [Use systemd]),
[with_systemd=$enableval],
[with_systemd=no])
if test "$with_systemd" = "yes" ; then
SYSTEMD=libsystemd-login
AC_DEFINE(HAVE_SYSTEMD, 1, [Define to 1 if systemd is available])
else
SYSTEMD=
fi
dnl ==============================================
dnl Check that we meet the dependencies
dnl ==============================================
@ -118,7 +129,8 @@ PKG_CHECK_MODULES(USER_ACCOUNTS_PANEL, $COMMON_MODULES dbus-glib-1
polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION
gnome-desktop-3.0
clutter-gst-1.0
gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED_VERSION)
gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED_VERSION
$SYSTEMD)
PKG_CHECK_MODULES(WACOM_PANEL, $COMMON_MODULES
gnome-settings-daemon >= $GSD_REQUIRED_VERSION
xi >= 1.2 x11 libwacom)

View file

@ -1028,6 +1028,22 @@ um_user_set_password (UmUser *user,
}
}
#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;
}
#else
gboolean
um_user_is_logged_in (UmUser *user)
{
@ -1065,6 +1081,7 @@ um_user_is_logged_in (UmUser *user)
return n_sessions > 0;
}
#endif
void
um_user_set_automatic_login (UmUser *user,