-diff -uNr gnome-settings-daemon-3.6.0/configure.ac gnome-settings-daemon-3.6.0.new/configure.ac
---- gnome-settings-daemon-3.6.0/configure.ac 2012-09-25 10:36:08.000000000 +0200
-+++ gnome-settings-daemon-3.6.0.new/configure.ac 2012-10-03 20:20:58.796757197 +0200
-@@ -347,7 +347,7 @@
- [with_systemd=$enableval],
- [with_systemd=no])
- if test "$with_systemd" = "yes" ; then
-- PKG_CHECK_MODULES(SYSTEMD, [libsystemd-login])
-+ PKG_CHECK_MODULES(SYSTEMD, [libsystemd-daemon libsystemd-login])
- AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is used for session tracking])
- SESSION_TRACKING=systemd
- else
-diff -uNr gnome-settings-daemon-3.6.0/gnome-settings-daemon/gnome-settings-session.c gnome-settings-daemon-3.6.0.new/gnome-settings-daemon/gnome-settings-session.c
---- gnome-settings-daemon-3.6.0/gnome-settings-daemon/gnome-settings-session.c 2012-02-15 19:21:07.000000000 +0100
-+++ gnome-settings-daemon-3.6.0.new/gnome-settings-daemon/gnome-settings-session.c 2012-10-03 20:20:58.796757197 +0200
-@@ -30,6 +30,7 @@
- #include "gnome-settings-session.h"
-
- #ifdef HAVE_SYSTEMD
-+#include <systemd/sd-daemon.h>
- #include <systemd/sd-login.h>
-
- typedef struct
-@@ -130,10 +131,9 @@
- {
- #ifdef HAVE_SYSTEMD
- GSource *sd_source;
--#else
-+#endif
- GDBusProxy *proxy_session;
- GCancellable *cancellable;
--#endif
- gchar *session_id;
- GnomeSettingsSessionState state;
- };
-@@ -237,7 +237,7 @@
- return TRUE;
- }
-
--#else /* HAVE_SYSTEMD */
-+#endif /* HAVE_SYSTEMD */
-
- static void
- gnome_settings_session_proxy_signal_cb (GDBusProxy *proxy,
-@@ -371,22 +371,26 @@
- g_object_unref (proxy_manager);
- }
-
--#endif /* HAVE_SYSTEMD */
--
- static void
- gnome_settings_session_init (GnomeSettingsSession *session)
- {
- session->priv = GNOME_SETTINGS_SESSION_GET_PRIVATE (session);
-
- #ifdef HAVE_SYSTEMD
-- sd_pid_get_session (getpid(), &session->priv->session_id);
--
-- session->priv->sd_source = sd_source_new ();
-- g_source_set_callback (session->priv->sd_source, sessions_changed, session, NULL);
-- g_source_attach (session->priv->sd_source, NULL);
--
-- sessions_changed (session);
--#else
-+ session->priv->sd_source = NULL;
-+
-+ if (sd_booted () > 0) {
-+ sd_pid_get_session (getpid(), &session->priv->session_id);
-+
-+ session->priv->sd_source = sd_source_new ();
-+ g_source_set_callback (session->priv->sd_source, sessions_changed, session, NULL);
-+ g_source_attach (session->priv->sd_source, NULL);
-+
-+ sessions_changed (session);
-+
-+ return;
-+ }
-+#endif
- session->priv->cancellable = g_cancellable_new ();
-
- /* connect to ConsoleKit */
-@@ -399,7 +403,6 @@
- session->priv->cancellable,
- got_manager_proxy_cb,
- session);
--#endif
- }
-
- static void
-@@ -415,15 +418,16 @@
- if (session->priv->sd_source != NULL) {
- g_source_destroy (session->priv->sd_source);
- g_source_unref (session->priv->sd_source);
-+ goto out;
- }
--#else
-+#endif
- g_cancellable_cancel (session->priv->cancellable);
-
- if (session->priv->proxy_session != NULL)
- g_object_unref (session->priv->proxy_session);
- g_object_unref (session->priv->cancellable);
--#endif
-
-+out:
- G_OBJECT_CLASS (gnome_settings_session_parent_class)->finalize (object);
- }
-
-diff -uNr gnome-settings-daemon-3.6.0/plugins/common/gsd-power-helper.c gnome-settings-daemon-3.6.0.new/plugins/common/gsd-power-helper.c
---- gnome-settings-daemon-3.6.0/plugins/common/gsd-power-helper.c 2012-09-17 18:48:45.000000000 +0200
-+++ gnome-settings-daemon-3.6.0.new/plugins/common/gsd-power-helper.c 2012-10-03 20:20:58.796757197 +0200
-@@ -79,7 +79,7 @@
- g_object_unref (bus);
- }
-
--#else /* HAVE_SYSTEMD */
-+#endif /* HAVE_SYSTEMD */
-
- static void
- consolekit_stop_cb (GObject *source_object,
-@@ -170,34 +170,37 @@
- -1, NULL,
- upower_sleep_cb, NULL);
- }
--#endif /* HAVE_SYSTEMD */
-+
-
- void
- gsd_power_suspend (GDBusProxy *upower_proxy)
- {
- #ifdef HAVE_SYSTEMD
-- systemd_suspend ();
--#else
-- upower_suspend (upower_proxy);
-+ if (sd_booted () > 0)
-+ systemd_suspend ();
-+ else
- #endif
-+ upower_suspend (upower_proxy);
- }
-
- void
- gsd_power_poweroff (void)
- {
- #ifdef HAVE_SYSTEMD
-- systemd_stop ();
--#else
-- consolekit_stop ();
-+ if (sd_booted () > 0)
-+ systemd_stop ();
-+ else
- #endif
-+ consolekit_stop ();
- }
-
- void
- gsd_power_hibernate (GDBusProxy *upower_proxy)
- {
- #ifdef HAVE_SYSTEMD
-- systemd_hibernate ();
--#else
-- upower_hibernate (upower_proxy);
-+ if (sd_booted () > 0)
-+ systemd_hibernate ();
-+ else
- #endif
-+ upower_hibernate (upower_proxy);
- }
-diff -uNr gnome-settings-daemon-3.6.0/plugins/common/Makefile.am gnome-settings-daemon-3.6.0.new/plugins/common/Makefile.am
---- gnome-settings-daemon-3.6.0/plugins/common/Makefile.am 2012-09-17 18:48:45.000000000 +0200
-+++ gnome-settings-daemon-3.6.0.new/plugins/common/Makefile.am 2012-10-03 20:24:52.764019870 +0200
-@@ -17,6 +17,7 @@
- $(PLUGIN_CFLAGS) \
- $(SETTINGS_PLUGIN_CFLAGS) \
- $(COMMON_CFLAGS) \
-+ $(SYSTEMD_CFLAGS) \
- $(AM_CFLAGS)
-
- libcommon_la_LDFLAGS = \
-@@ -24,6 +25,7 @@
-
- libcommon_la_LIBADD = \
- $(SETTINGS_PLUGIN_LIBS) \
-+ $(SYSTEMD_LIBS) \
- $(COMMON_LIBS)
-
- libexec_PROGRAMS = gsd-test-input-helper