diff --git a/mate-session-manager-1.6.1-login1.patch b/mate-session-manager-1.6.1-login1.patch deleted file mode 100644 index 009677b..0000000 --- a/mate-session-manager-1.6.1-login1.patch +++ /dev/null @@ -1,267 +0,0 @@ -diff -up mate-session-manager-1.6.1/mate-session/gsm-logout-dialog.c.login1 mate-session-manager-1.6.1/mate-session/gsm-logout-dialog.c ---- mate-session-manager-1.6.1/mate-session/gsm-logout-dialog.c.login1 2013-07-25 10:35:06.000000000 -0500 -+++ mate-session-manager-1.6.1/mate-session/gsm-logout-dialog.c 2013-09-10 08:25:55.450880450 -0500 -@@ -200,13 +200,29 @@ gsm_logout_dialog_destroy (GsmLogoutDial - static gboolean - gsm_logout_supports_system_suspend (GsmLogoutDialog *logout_dialog) - { -- return up_client_get_can_suspend (logout_dialog->priv->up_client); -+ gboolean ret; -+#ifdef HAVE_SYSTEMD -+ if (LOGIND_RUNNING()) -+ ret = gsm_systemd_can_suspend (logout_dialog->priv->systemd); -+ else -+#endif -+ ret = up_client_get_can_suspend (logout_dialog->priv->up_client); -+ -+ return ret; - } - - static gboolean - gsm_logout_supports_system_hibernate (GsmLogoutDialog *logout_dialog) - { -- return up_client_get_can_hibernate (logout_dialog->priv->up_client); -+ gboolean ret; -+#ifdef HAVE_SYSTEMD -+ if (LOGIND_RUNNING()) -+ ret = gsm_systemd_can_hibernate (logout_dialog->priv->systemd); -+ else -+#endif -+ ret = up_client_get_can_hibernate (logout_dialog->priv->up_client); -+ -+ return ret; - } - - static gboolean -diff -up mate-session-manager-1.6.1/mate-session/gsm-manager.c.login1 mate-session-manager-1.6.1/mate-session/gsm-manager.c ---- mate-session-manager-1.6.1/mate-session/gsm-manager.c.login1 2013-07-25 10:35:06.000000000 -0500 -+++ mate-session-manager-1.6.1/mate-session/gsm-manager.c 2013-09-10 08:39:41.199847380 -0500 -@@ -1101,6 +1101,20 @@ manager_attempt_hibernate (GsmManager *m - GError *error; - gboolean ret; - -+#ifdef HAVE_SYSTEMD -+ if (LOGIND_RUNNING()) { -+ -+ GsmSystemd *systemd; -+ -+ systemd = gsm_get_systemd (); -+ -+ /* lock the screen before we suspend */ -+ manager_perhaps_lock (manager); -+ -+ gsm_systemd_attempt_hibernate (systemd); -+ } -+ else { -+#endif - can_hibernate = up_client_get_can_hibernate (manager->priv->up_client); - if (can_hibernate) { - -@@ -1115,6 +1129,9 @@ manager_attempt_hibernate (GsmManager *m - g_error_free (error); - } - } -+#ifdef HAVE_SYSTEMD -+ } -+#endif - } - - static void -@@ -1124,6 +1141,20 @@ manager_attempt_suspend (GsmManager *man - GError *error; - gboolean ret; - -+#ifdef HAVE_SYSTEMD -+ if (LOGIND_RUNNING()) { -+ -+ GsmSystemd *systemd; -+ -+ systemd = gsm_get_systemd (); -+ -+ /* lock the screen before we suspend */ -+ manager_perhaps_lock (manager); -+ -+ gsm_systemd_attempt_suspend (systemd); -+ } -+ else { -+#endif - can_suspend = up_client_get_can_suspend (manager->priv->up_client); - if (can_suspend) { - -@@ -1138,6 +1169,9 @@ manager_attempt_suspend (GsmManager *man - g_error_free (error); - } - } -+#ifdef HAVE_SYSTEMD -+ } -+#endif - } - - static void -diff -up mate-session-manager-1.6.1/mate-session/gsm-systemd.c.login1 mate-session-manager-1.6.1/mate-session/gsm-systemd.c ---- mate-session-manager-1.6.1/mate-session/gsm-systemd.c.login1 2013-07-25 10:35:06.000000000 -0500 -+++ mate-session-manager-1.6.1/mate-session/gsm-systemd.c 2013-09-10 08:51:06.174857597 -0500 -@@ -725,6 +725,141 @@ gsm_systemd_can_stop (GsmSystemd *manage - return can_stop; - } - -+gboolean -+gsm_systemd_can_hibernate (GsmSystemd *manager) -+{ -+ gboolean res; -+ gchar *value; -+ gboolean can_hibernate; -+ GError *error; -+ -+ error = NULL; -+ -+ if (!gsm_systemd_ensure_sd_connection (manager, &error)) { -+ g_warning ("Could not connect to Systemd: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -+ "CanHibernate", -+ INT_MAX, -+ &error, -+ G_TYPE_INVALID, -+ G_TYPE_STRING, &value, -+ G_TYPE_INVALID); -+ if (res == FALSE) { -+ g_warning ("Could not make DBUS call: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ can_hibernate = g_strcmp0 (value, "yes") == 0 || -+ g_strcmp0 (value, "challenge") == 0; -+ g_free (value); -+ return can_hibernate; -+} -+ -+gboolean -+gsm_systemd_can_suspend (GsmSystemd *manager) -+{ -+ gboolean res; -+ gchar *value; -+ gboolean can_suspend; -+ GError *error; -+ -+ error = NULL; -+ -+ if (!gsm_systemd_ensure_sd_connection (manager, &error)) { -+ g_warning ("Could not connect to Systemd: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -+ "CanSuspend", -+ INT_MAX, -+ &error, -+ G_TYPE_INVALID, -+ G_TYPE_STRING, &value, -+ G_TYPE_INVALID); -+ if (res == FALSE) { -+ g_warning ("Could not make DBUS call: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ can_suspend = g_strcmp0 (value, "yes") == 0 || -+ g_strcmp0 (value, "challenge") == 0; -+ g_free (value); -+ return can_suspend; -+} -+ -+void -+gsm_systemd_attempt_hibernate (GsmSystemd *manager) -+{ -+ gboolean res; -+ GError *error; -+ -+ error = NULL; -+ -+ if (!gsm_systemd_ensure_sd_connection (manager, &error)) { -+ g_warning ("Could not connect to Systemd: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -+ "Hibernate", -+ INT_MAX, -+ &error, -+ G_TYPE_BOOLEAN, TRUE, /* interactive */ -+ G_TYPE_INVALID, -+ G_TYPE_INVALID); -+ if (res == FALSE) { -+ g_warning ("Could not make DBUS call: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+} -+ -+void -+gsm_systemd_attempt_suspend (GsmSystemd *manager) -+{ -+ gboolean res; -+ GError *error; -+ -+ error = NULL; -+ -+ if (!gsm_systemd_ensure_sd_connection (manager, &error)) { -+ g_warning ("Could not connect to Systemd: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ -+ res = dbus_g_proxy_call_with_timeout (manager->priv->sd_proxy, -+ "Suspend", -+ INT_MAX, -+ &error, -+ G_TYPE_BOOLEAN, TRUE, /* interactive */ -+ G_TYPE_INVALID, -+ G_TYPE_INVALID); -+ if (res == FALSE) { -+ g_warning ("Could not make DBUS call: %s", -+ error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+} -+ - gchar * - gsm_systemd_get_current_session_type (GsmSystemd *manager) - { -diff -up mate-session-manager-1.6.1/mate-session/gsm-systemd.h.login1 mate-session-manager-1.6.1/mate-session/gsm-systemd.h ---- mate-session-manager-1.6.1/mate-session/gsm-systemd.h.login1 2013-07-25 10:35:06.000000000 -0500 -+++ mate-session-manager-1.6.1/mate-session/gsm-systemd.h 2013-09-10 08:39:15.689107516 -0500 -@@ -89,10 +89,18 @@ gboolean gsm_systemd_can_stop - - gboolean gsm_systemd_can_restart (GsmSystemd *manager); - -+gboolean gsm_systemd_can_hibernate (GsmSystemd *manager); -+ -+gboolean gsm_systemd_can_suspend (GsmSystemd *manager); -+ - void gsm_systemd_attempt_stop (GsmSystemd *manager); - - void gsm_systemd_attempt_restart (GsmSystemd *manager); - -+void gsm_systemd_attempt_hibernate (GsmSystemd *manager); -+ -+void gsm_systemd_attempt_suspend (GsmSystemd *manager); -+ - void gsm_systemd_set_session_idle (GsmSystemd *manager, - gboolean is_idle); - diff --git a/mate-session-manager_autotools.patch b/mate-session-manager_autotools.patch deleted file mode 100644 index 21f85b9..0000000 --- a/mate-session-manager_autotools.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -upr mate-session-manager-1.6.1-orig/configure.ac mate-session-manager-1.6.1/configure.ac ---- mate-session-manager-1.6.1-orig/configure.ac 2013-10-17 01:14:54.836340337 +0200 -+++ mate-session-manager-1.6.1/configure.ac 2013-10-17 01:16:01.768026455 +0200 -@@ -14,7 +14,7 @@ MATE_DEBUG_CHECK - IT_PROG_INTLTOOL([0.40.0]) - - AC_ISC_POSIX --AC_PROG_CC -+AM_PROG_CC_C_O - AC_STDC_HEADERS - AM_PROG_LIBTOOL - AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal) diff --git a/mate-session-manager_switch-to-gnome-keyring.patch b/mate-session-manager_switch-to-gnome-keyring.patch deleted file mode 100644 index f909300..0000000 --- a/mate-session-manager_switch-to-gnome-keyring.patch +++ /dev/null @@ -1,333 +0,0 @@ -diff --git a/mate-session/Makefile.am b/mate-session/Makefile.am -index f37a0e2..2c73d63 100644 ---- a/mate-session/Makefile.am -+++ b/mate-session/Makefile.am -@@ -42,6 +42,8 @@ mate_session_SOURCES = \ - mdm-signal-handler.c \ - mdm-log.h \ - mdm-log.c \ -+ msm-gnome.c \ -+ msm-gnome.h \ - main.c \ - gsm-store.h \ - gsm-store.c \ -diff --git a/mate-session/main.c b/mate-session/main.c -index 6cfbbe6..8608852 100644 ---- a/mate-session/main.c -+++ b/mate-session/main.c -@@ -51,6 +51,8 @@ - #include "gsm-xsmp-server.h" - #include "gsm-store.h" - -+#include "msm-gnome.h" -+ - #define GSM_SCHEMA "org.mate.session" - #define GSM_DEFAULT_SESSION_KEY "default-session" - #define GSM_REQUIRED_COMPONENTS_SCHEMA GSM_SCHEMA ".required-components" -@@ -542,6 +544,9 @@ int main(int argc, char** argv) - */ - acquire_name(); - -+ /* Starts gnome compat mode */ -+ msm_gnome_start(); -+ - manager = gsm_manager_new(client_store, failsafe); - - signal_handler = mdm_signal_handler_new(); -@@ -583,6 +588,7 @@ int main(int argc, char** argv) - g_object_unref(client_store); - } - -+ msm_gnome_stop(); - mdm_log_shutdown(); - - return 0; -diff --git a/mate-session/msm-gnome.c b/mate-session/msm-gnome.c -new file mode 100644 -index 0000000..1043a35 ---- /dev/null -+++ b/mate-session/msm-gnome.c -@@ -0,0 +1,246 @@ -+/* -+ * Copyright (c) 2004-2005 Benedikt Meurer -+ * 2013 Stefano Karapetsas -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -+ * MA 02110-1301 USA. -+ * -+ * Most parts of this file where taken from xfce4-session and -+ * gnome-session. -+ */ -+ -+#include "config.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include -+ -+#include "msm-gnome.h" -+ -+#define GNOME_KEYRING_DAEMON "gnome-keyring-daemon" -+ -+ -+static gboolean gnome_compat_started = FALSE; -+static int keyring_lifetime_pipe[2]; -+static pid_t gnome_keyring_daemon_pid = 0; -+static Window gnome_smproxy_window = None; -+ -+static void -+child_setup (gpointer user_data) -+{ -+ gint open_max; -+ gint fd; -+ char *fd_str; -+ -+ open_max = sysconf (_SC_OPEN_MAX); -+ for (fd = 3; fd < open_max; fd++) -+ { -+ if (fd != keyring_lifetime_pipe[0]) -+ fcntl (fd, F_SETFD, FD_CLOEXEC); -+ } -+ -+ fd_str = g_strdup_printf ("%d", keyring_lifetime_pipe[0]); -+ g_setenv ("GNOME_KEYRING_LIFETIME_FD", fd_str, TRUE); -+ g_free (fd_str); -+} -+ -+ -+static void -+gnome_keyring_daemon_startup (void) -+{ -+ GError *error = NULL; -+ gchar *sout; -+ gchar **lines; -+ gsize lineno; -+ gint status; -+ glong pid; -+ gchar *end; -+ gchar *argv[3]; -+ gchar *p; -+ gchar *name; -+ const gchar *value; -+ -+ /* Pipe to slave keyring lifetime to */ -+ if (pipe (keyring_lifetime_pipe)) -+ { -+ g_warning ("Failed to set up pipe for gnome-keyring: %s", strerror (errno)); -+ return; -+ } -+ -+ error = NULL; -+ argv[0] = GNOME_KEYRING_DAEMON; -+ argv[1] = "--start"; -+ argv[2] = NULL; -+ g_spawn_sync (NULL, argv, NULL, -+ G_SPAWN_SEARCH_PATH | G_SPAWN_LEAVE_DESCRIPTORS_OPEN, -+ child_setup, NULL, -+ &sout, NULL, &status, &error); -+ -+ close (keyring_lifetime_pipe[0]); -+ /* We leave keyring_lifetime_pipe[1] open for the lifetime of the session, -+ in order to slave the keyring daemon lifecycle to the session. */ -+ -+ if (error != NULL) -+ { -+ g_printerr ("Failed to run gnome-keyring-daemon: %s\n", -+ error->message); -+ g_error_free (error); -+ } -+ else -+ { -+ if (WIFEXITED (status) && WEXITSTATUS (status) == 0 && sout != NULL) -+ { -+ lines = g_strsplit (sout, "\n", 0); -+ -+ for (lineno = 0; lines[lineno] != NULL; lineno++) -+ { -+ p = strchr (lines[lineno], '='); -+ if (p == NULL) -+ continue; -+ -+ name = g_strndup (lines[lineno], p - lines[lineno]); -+ value = p + 1; -+ -+ g_setenv (name, value, TRUE); -+ -+ if (g_strcmp0 (name, "GNOME_KEYRING_PID") == 0) -+ { -+ pid = strtol (value, &end, 10); -+ if (end != value) -+ gnome_keyring_daemon_pid = pid; -+ } -+ -+ g_free (name); -+ } -+ -+ g_strfreev (lines); -+ } -+ else -+ { -+ /* daemon failed for some reason */ -+ g_printerr ("gnome-keyring-daemon failed to start correctly, " -+ "exit code: %d\n", WEXITSTATUS (status)); -+ } -+ -+ g_free (sout); -+ } -+} -+ -+static void -+gnome_keyring_daemon_shutdown (void) -+{ -+ if (gnome_keyring_daemon_pid != 0) -+ { -+ kill (gnome_keyring_daemon_pid, SIGTERM); -+ gnome_keyring_daemon_pid = 0; -+ } -+} -+ -+ -+ -+static void -+msm_compat_gnome_smproxy_startup (void) -+{ -+ Atom gnome_sm_proxy; -+ Display *dpy; -+ Window root; -+ -+ gdk_error_trap_push (); -+ -+ /* Set GNOME_SM_PROXY property, since some apps (like OOo) seem to require -+ * it to behave properly. Thanks to Jasper/Francois for reporting this. -+ * This has another advantage, since it prevents people from running -+ * gnome-smproxy in xfce4, which would cause trouble otherwise. -+ */ -+ dpy = gdk_display; -+ root = RootWindow (dpy, 0); -+ -+ if (gnome_smproxy_window != None) -+ XDestroyWindow (dpy, gnome_smproxy_window); -+ -+ gnome_sm_proxy = XInternAtom (dpy, "GNOME_SM_PROXY", False); -+ gnome_smproxy_window = XCreateSimpleWindow (dpy, root, 1, 1, 1, 1, 0, 0, 0); -+ -+ XChangeProperty (dpy, gnome_smproxy_window, gnome_sm_proxy, -+ XA_CARDINAL, 32, PropModeReplace, -+ (unsigned char *) (void *) &gnome_smproxy_window, 1); -+ XChangeProperty (dpy, root, gnome_sm_proxy, -+ XA_CARDINAL, 32, PropModeReplace, -+ (unsigned char *) (void *) &gnome_smproxy_window, 1); -+ -+ XSync (dpy, False); -+ -+ gdk_error_trap_pop (); -+} -+ -+ -+static void -+msm_compat_gnome_smproxy_shutdown (void) -+{ -+ gdk_error_trap_push (); -+ -+ if (gnome_smproxy_window != None) -+ { -+ XDestroyWindow (gdk_display, gnome_smproxy_window); -+ XSync (gdk_display, False); -+ gnome_smproxy_window = None; -+ } -+ -+ gdk_error_trap_pop (); -+} -+ -+ -+void -+msm_gnome_start (void) -+{ -+ if (gnome_compat_started == TRUE) -+ return; -+ -+ g_debug ("MsmGnome: starting"); -+ -+ msm_compat_gnome_smproxy_startup (); -+ -+ gnome_keyring_daemon_startup (); -+ -+ gnome_compat_started = TRUE; -+} -+ -+ -+void -+msm_gnome_stop (void) -+{ -+ if (gnome_compat_started == FALSE) -+ return; -+ -+ g_debug ("MsmGnome: stopping"); -+ -+ /* shutdown the keyring daemon */ -+ gnome_keyring_daemon_shutdown (); -+ -+ msm_compat_gnome_smproxy_shutdown (); -+ -+ gnome_compat_started = FALSE; -+} -+ -diff --git a/mate-session/msm-gnome.h b/mate-session/msm-gnome.h -new file mode 100644 -index 0000000..e3c2e60 ---- /dev/null -+++ b/mate-session/msm-gnome.h -@@ -0,0 +1,30 @@ -+/* -+ * Copyright (c) 2004 Benedikt Meurer -+ * 2013 Stefano Karapetsas -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -+ * MA 02110-1301 USA. -+ * -+ * Most parts of this file where taken from xfce4-session and -+ * gnome-session. -+ */ -+ -+#ifndef __MSM_GNOME_H__ -+#define __MSM_GNOME_H__ -+ -+void msm_gnome_start (void); -+void msm_gnome_stop (void); -+ -+#endif /* !__MSM_GNOME_H__ */ - diff --git a/mate-session-manager_systemd-session_id.patch b/mate-session-manager_systemd-session_id.patch deleted file mode 100644 index 7468c1b..0000000 --- a/mate-session-manager_systemd-session_id.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 2725ff7ec27f0158bc3d6bb118e5e5649180e474 Mon Sep 17 00:00:00 2001 -From: Scott Balneaves -Date: Wed, 12 Jun 2013 14:18:36 +0000 -Subject: Systemd support: session_id is char*, not int - ---- -diff --git a/mate-session/gsm-systemd.c b/mate-session/gsm-systemd.c -index dbe8ea0..6b263c7 100644 ---- a/mate-session/gsm-systemd.c -+++ b/mate-session/gsm-systemd.c -@@ -547,7 +547,7 @@ gsm_systemd_set_session_idle (GsmSystemd *manager, - gboolean is_idle) - { - GError *error; -- char *session_path; -+ char *session_path = NULL; - DBusMessage *message; - DBusMessage *reply; - DBusError dbus_error; -@@ -564,6 +564,8 @@ gsm_systemd_set_session_idle (GsmSystemd *manager, - - gsm_systemd_get_session_path (dbus_g_connection_get_connection (manager->priv->dbus_connection), &session_path); - -+ g_return_if_fail (session_path != NULL); -+ - g_debug ("Updating Systemd idle status: %d", is_idle); - message = dbus_message_new_method_call (SD_NAME, - session_path, -@@ -600,7 +602,9 @@ gsm_systemd_can_switch_user (GsmSystemd *manager) - { - GError *error; - char *session_id = NULL; -+#ifdef HAVE_SYSTEMD - char *seat_id = NULL; -+#endif - int ret = 0; - - error = NULL; -@@ -864,9 +868,11 @@ gchar * - gsm_systemd_get_current_session_type (GsmSystemd *manager) - { - GError *gerror; -- int session_id; -+ gchar *session_id; - gchar *session_class = NULL; -+#ifdef HAVE_SYSTEMD - int res; -+#endif - - gerror = NULL; - -@@ -890,6 +896,8 @@ gsm_systemd_get_current_session_type (GsmSystemd *manager) - g_warning ("Could not get Systemd session class!"); - return NULL; - } -+ -+ g_free (session_id); - #endif - - return session_class; --- -cgit - diff --git a/mate-session-manager_upower.patch b/mate-session-manager_upower.patch deleted file mode 100644 index 8515672..0000000 --- a/mate-session-manager_upower.patch +++ /dev/null @@ -1,279 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index 88a669b..2d713b1 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -70,7 +70,6 @@ PKG_CHECK_MODULES(MATE_SESSION, - gio-2.0 >= $GIO_REQUIRED - gtk+-$GTK_API_VERSION >= $GTK_REQUIRED - dbus-glib-1 >= $DBUS_GLIB_REQUIRED -- upower-glib >= $UPOWER_REQUIRED - ) - - PKG_CHECK_MODULES(SESSION_PROPERTIES, -@@ -128,6 +127,28 @@ AM_CONDITIONAL(HAVE_SYSTEMD, test "x$use_systemd" = "xyes") - AC_SUBST(HAVE_SYSTEMD) - - dnl ==================================================================== -+dnl UPOWER -+dnl ==================================================================== -+ -+AC_ARG_ENABLE(upower, AS_HELP_STRING([--enable-upower],[Add upower support for suspend/hibernate]), enable_upower=$enableval, -+ enable_upower=yes) -+if test x$enable_upower != xno; then -+ PKG_CHECK_MODULES(UPOWER, upower-glib >= $UPOWER_REQUIRED, has_upower=yes, has_upower=no) -+ if test $has_upower = "no"; then -+ AC_CHECK_HEADER(libupower-glib/upower.h, has_upower=yes, has_upower=no) -+ if test $has_upower = "no"; then -+ AC_MSG_ERROR([Cannot fine UPOWER]) -+ fi -+ AC_SUBST(UPOWER_CFLAGS) -+ AC_SUBST(UPOWER_LIBS) -+ fi -+fi -+AM_CONDITIONAL(HAVE_UPOWER, test x$enable_upower = xyes) -+if test x$enable_upower = xyes; then -+ AC_DEFINE(HAVE_UPOWER,1,[Use upower support for for suspend/hibernate]) -+fi -+ -+dnl ==================================================================== - dnl X development libraries check - dnl ==================================================================== - -@@ -385,6 +406,7 @@ echo " - GTK+ version: ${with_gtk} - Default WM: ${with_default_wm} - Systemd support: ${use_systemd} -+ Upower support: ${enable_upower} - IPv6 support: ${have_full_ipv6} - Backtrace support: ${have_backtrace} - XRender support: ${have_xrender} -diff --git a/mate-session/Makefile.am b/mate-session/Makefile.am -index 2c73d63..9485fec 100644 ---- a/mate-session/Makefile.am -+++ b/mate-session/Makefile.am -@@ -7,6 +7,7 @@ noinst_PROGRAMS = \ - AM_CPPFLAGS = \ - $(MATE_SESSION_CFLAGS) \ - $(SYSTEMD_CFLAGS) \ -+ $(UPOWER_CFLAGS) \ - $(DISABLE_DEPRECATED_CFLAGS) - - AM_CFLAGS = $(WARN_CFLAGS) -@@ -78,6 +79,7 @@ mate_session_LDADD = \ - $(XEXT_LIBS) \ - $(MATE_SESSION_LIBS) \ - $(SYSTEMD_LIBS) \ -+ $(UPOWER_LIBS) \ - $(EXECINFO_LIBS) - - libgsmutil_la_SOURCES = \ -diff --git a/mate-session/gsm-logout-dialog.c b/mate-session/gsm-logout-dialog.c -index 1a79875..3a6aba5 100644 ---- a/mate-session/gsm-logout-dialog.c -+++ b/mate-session/gsm-logout-dialog.c -@@ -27,7 +27,9 @@ - #include - #include - -+#ifdef HAVE_UPOWER - #include -+#endif - - #include "gsm-logout-dialog.h" - #ifdef HAVE_SYSTEMD -@@ -52,8 +54,9 @@ - struct _GsmLogoutDialogPrivate - { - GsmDialogLogoutType type; -- -+#ifdef HAVE_UPOWER - UpClient *up_client; -+#endif - #ifdef HAVE_SYSTEMD - GsmSystemd *systemd; - #endif -@@ -147,9 +150,9 @@ enum { - gtk_window_set_skip_taskbar_hint (GTK_WINDOW (logout_dialog), TRUE); - gtk_window_set_keep_above (GTK_WINDOW (logout_dialog), TRUE); - gtk_window_stick (GTK_WINDOW (logout_dialog)); -- -+#ifdef HAVE_UPOWER - logout_dialog->priv->up_client = up_client_new (); -- -+#endif - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) - logout_dialog->priv->systemd = gsm_get_systemd (); -@@ -176,12 +179,12 @@ enum { - g_source_remove (logout_dialog->priv->timeout_id); - logout_dialog->priv->timeout_id = 0; - } -- -+#ifdef HAVE_UPOWER - if (logout_dialog->priv->up_client) { - g_object_unref (logout_dialog->priv->up_client); - logout_dialog->priv->up_client = NULL; - } -- -+#endif - #ifdef HAVE_SYSTEMD - if (logout_dialog->priv->systemd) { - g_object_unref (logout_dialog->priv->systemd); -@@ -204,10 +207,10 @@ enum { - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) - ret = gsm_systemd_can_suspend (logout_dialog->priv->systemd); -- else - #endif -+#ifdef HAVE_UPOWER - ret = up_client_get_can_suspend (logout_dialog->priv->up_client); -- -+#endif - return ret; - } - -@@ -218,10 +221,10 @@ enum { - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) - ret = gsm_systemd_can_hibernate (logout_dialog->priv->systemd); -- else - #endif -+#ifdef HAVE_UPOWER - ret = up_client_get_can_hibernate (logout_dialog->priv->up_client); -- -+#endif - return ret; - } - -diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c -index b4986ac..9a29f7b 100644 ---- a/mate-session/gsm-manager.c -+++ b/mate-session/gsm-manager.c -@@ -38,7 +38,9 @@ - #include - #include - -+#ifdef HAVE_UPOWER - #include -+#endif - - #include /* for logout dialog */ - #include /* for gsettings */ -@@ -144,9 +146,10 @@ struct GsmManagerPrivate - - DBusGProxy *bus_proxy; - DBusGConnection *connection; -- -+#ifdef HAVE_UPOWER - /* Interface with other parts of the system */ - UpClient *up_client; -+#endif - }; - - enum { -@@ -1105,10 +1108,11 @@ enum { - static void - manager_attempt_hibernate (GsmManager *manager) - { -+#ifdef HAVE_UPOWER - gboolean can_hibernate; - GError *error; - gboolean ret; -- -+#endif - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) { - -@@ -1121,8 +1125,8 @@ enum { - - gsm_systemd_attempt_hibernate (systemd); - } -- else { - #endif -+#ifdef HAVE_UPOWER - can_hibernate = up_client_get_can_hibernate (manager->priv->up_client); - if (can_hibernate) { - -@@ -1137,18 +1141,17 @@ enum { - g_error_free (error); - } - } --#ifdef HAVE_SYSTEMD -- } - #endif - } - - static void - manager_attempt_suspend (GsmManager *manager) - { -+#ifdef HAVE_UPOWER - gboolean can_suspend; - GError *error; - gboolean ret; -- -+#endif - #ifdef HAVE_SYSTEMD - if (LOGIND_RUNNING()) { - -@@ -1161,8 +1164,8 @@ enum { - - gsm_systemd_attempt_suspend (systemd); - } -- else { - #endif -+#ifdef HAVE_UPOWER - can_suspend = up_client_get_can_suspend (manager->priv->up_client); - if (can_suspend) { - -@@ -1177,8 +1180,6 @@ enum { - g_error_free (error); - } - } --#ifdef HAVE_SYSTEMD -- } - #endif - } - -@@ -2349,12 +2350,12 @@ enum { - g_object_unref (manager->priv->settings_screensaver); - manager->priv->settings_screensaver = NULL; - } -- -+#ifdef HAVE_UPOWER - if (manager->priv->up_client != NULL) { - g_object_unref (manager->priv->up_client); - manager->priv->up_client = NULL; - } -- -+#endif - G_OBJECT_CLASS (gsm_manager_parent_class)->dispose (object); - } - -@@ -2561,9 +2562,9 @@ enum { - "status-changed", - G_CALLBACK (on_presence_status_changed), - manager); -- -+#ifdef HAVE_UPOWER - manager->priv->up_client = up_client_new (); -- -+#endif - g_signal_connect (manager->priv->settings_session, - "changed", - G_CALLBACK (on_gsettings_key_changed), -@@ -3232,12 +3233,12 @@ enum { - #endif - gboolean can_suspend; - gboolean can_hibernate; -- -+#ifdef HAVE_UPOWER - g_object_get (manager->priv->up_client, - "can-suspend", &can_suspend, - "can-hibernate", &can_hibernate, - NULL); -- -+#endif - g_debug ("GsmManager: CanShutdown called"); - - g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); -