forked from pool/xfce4-session
Accepting request 186331 from X11:xfce
- add xfce4-session-systemd-suspend-hibernate-support.patch in order to add systemd suspend/hibernate support (bnc#9952) (forwarded request 186328 from gberh) OBS-URL: https://build.opensuse.org/request/show/186331 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xfce4-session?expand=0&rev=64
This commit is contained in:
commit
0c65e47add
390
xfce4-session-systemd-suspend-hibernate-support.patch
Normal file
390
xfce4-session-systemd-suspend-hibernate-support.patch
Normal file
@ -0,0 +1,390 @@
|
||||
Index: xfce4-session-4.10.1/configure.ac
|
||||
===================================================================
|
||||
--- xfce4-session-4.10.1.orig/configure.ac
|
||||
+++ xfce4-session-4.10.1/configure.ac
|
||||
@@ -103,7 +103,7 @@ XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0
|
||||
|
||||
dnl Check for polkit / systemd integration
|
||||
XDT_CHECK_OPTIONAL_PACKAGE([SYSTEMD], [polkit-gobject-1], [0.100],
|
||||
- [systemd], [Systemd support (through polit)])
|
||||
+ [systemd], [Systemd support (through polkit)])
|
||||
|
||||
dnl Check for debugging support
|
||||
XDT_FEATURE_DEBUG([xfsm_debug_default])
|
||||
@@ -207,10 +207,10 @@ echo " * Legacy session management:
|
||||
else
|
||||
echo " * Legacy session management: no"
|
||||
fi
|
||||
-if test x"$GNOME_KEYRING_FOUND" = x"yes"; then
|
||||
-echo " * Gnome Keyring support: yes"
|
||||
+if test x"$SYSTEMD_FOUND" = x"yes"; then
|
||||
+echo " * Systemd support (through polkit): yes"
|
||||
else
|
||||
-echo " * Gnome Keyring support: no"
|
||||
+echo " * Systemd support (through polkit): no"
|
||||
fi
|
||||
|
||||
echo
|
||||
Index: xfce4-session-4.10.1/xfce4-session/Makefile.am
|
||||
===================================================================
|
||||
--- xfce4-session-4.10.1.orig/xfce4-session/Makefile.am
|
||||
+++ xfce4-session-4.10.1/xfce4-session/Makefile.am
|
||||
@@ -38,6 +38,8 @@ xfce4_session_SOURCES = \
|
||||
xfsm-compat-gnome.h \
|
||||
xfsm-compat-kde.c \
|
||||
xfsm-compat-kde.h \
|
||||
+ xfsm-consolekit.c \
|
||||
+ xfsm-consolekit.h \
|
||||
xfsm-dns.c \
|
||||
xfsm-dns.h \
|
||||
xfsm-error.c \
|
||||
@@ -67,10 +69,6 @@ if HAVE_SYSTEMD
|
||||
xfce4_session_SOURCES += \
|
||||
xfsm-systemd.c \
|
||||
xfsm-systemd.h
|
||||
-else
|
||||
-xfce4_session_SOURCES += \
|
||||
- xfsm-consolekit.c \
|
||||
- xfsm-consolekit.h
|
||||
endif
|
||||
|
||||
xfce4_session_CFLAGS = \
|
||||
Index: xfce4-session-4.10.1/xfce4-session/xfsm-systemd.c
|
||||
===================================================================
|
||||
--- xfce4-session-4.10.1.orig/xfce4-session/xfsm-systemd.c
|
||||
+++ xfce4-session-4.10.1/xfce4-session/xfsm-systemd.c
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <dbus/dbus-glib.h>
|
||||
#include <dbus/dbus-glib-lowlevel.h>
|
||||
|
||||
+#include <libxfsm/xfsm-util.h>
|
||||
#include <xfce4-session/xfsm-systemd.h>
|
||||
|
||||
|
||||
@@ -33,8 +34,12 @@
|
||||
#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager"
|
||||
#define SYSTEMD_REBOOT_ACTION "Reboot"
|
||||
#define SYSTEMD_POWEROFF_ACTION "PowerOff"
|
||||
+#define SYSTEMD_SUSPEND_ACTION "Suspend"
|
||||
+#define SYSTEMD_HIBERNATE_ACTION "Hibernate"
|
||||
#define SYSTEMD_REBOOT_TEST "org.freedesktop.login1.reboot"
|
||||
#define SYSTEMD_POWEROFF_TEST "org.freedesktop.login1.power-off"
|
||||
+#define SYSTEMD_SUSPEND_TEST "org.freedesktop.login1.suspend"
|
||||
+#define SYSTEMD_HIBERNATE_TEST "org.freedesktop.login1.hibernate"
|
||||
|
||||
|
||||
|
||||
@@ -93,6 +98,22 @@ xfsm_systemd_finalize (GObject *object)
|
||||
}
|
||||
|
||||
|
||||
+
|
||||
+static gboolean
|
||||
+xfsm_systemd_lock_screen (GError **error)
|
||||
+{
|
||||
+ XfconfChannel *channel;
|
||||
+ gboolean ret = TRUE;
|
||||
+
|
||||
+ channel = xfsm_open_config ();
|
||||
+ if (xfconf_channel_get_bool (channel, "/shutdown/LockScreen", FALSE))
|
||||
+ ret = g_spawn_command_line_async ("xflock4", error);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
static gboolean
|
||||
xfsm_systemd_can_method (XfsmSystemd *systemd,
|
||||
gboolean *can_method,
|
||||
@@ -205,6 +226,34 @@ xfsm_systemd_try_shutdown (XfsmSystemd
|
||||
|
||||
|
||||
gboolean
|
||||
+xfsm_systemd_try_suspend (XfsmSystemd *systemd,
|
||||
+ GError **error)
|
||||
+{
|
||||
+ if (!xfsm_systemd_lock_screen (error))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ return xfsm_systemd_try_method (systemd,
|
||||
+ SYSTEMD_SUSPEND_ACTION,
|
||||
+ error);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+gboolean
|
||||
+xfsm_systemd_try_hibernate (XfsmSystemd *systemd,
|
||||
+ GError **error)
|
||||
+{
|
||||
+ if (!xfsm_systemd_lock_screen (error))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ return xfsm_systemd_try_method (systemd,
|
||||
+ SYSTEMD_HIBERNATE_ACTION,
|
||||
+ error);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+gboolean
|
||||
xfsm_systemd_can_restart (XfsmSystemd *systemd,
|
||||
gboolean *can_restart,
|
||||
GError **error)
|
||||
@@ -227,3 +276,39 @@ xfsm_systemd_can_shutdown (XfsmSystemd
|
||||
SYSTEMD_POWEROFF_TEST,
|
||||
error);
|
||||
}
|
||||
+
|
||||
+
|
||||
+
|
||||
+gboolean
|
||||
+xfsm_systemd_can_suspend (XfsmSystemd *systemd,
|
||||
+ gboolean *can_suspend,
|
||||
+ gboolean *auth_suspend,
|
||||
+ GError **error)
|
||||
+{
|
||||
+ gboolean ret = FALSE;
|
||||
+
|
||||
+ ret = xfsm_systemd_can_method (systemd,
|
||||
+ can_suspend,
|
||||
+ SYSTEMD_SUSPEND_TEST,
|
||||
+ error);
|
||||
+ *auth_suspend = *can_suspend;
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+gboolean
|
||||
+xfsm_systemd_can_hibernate (XfsmSystemd *systemd,
|
||||
+ gboolean *can_hibernate,
|
||||
+ gboolean *auth_hibernate,
|
||||
+ GError **error)
|
||||
+{
|
||||
+ gboolean ret = FALSE;
|
||||
+
|
||||
+ ret = xfsm_systemd_can_method (systemd,
|
||||
+ can_hibernate,
|
||||
+ SYSTEMD_HIBERNATE_TEST,
|
||||
+ error);
|
||||
+ *auth_hibernate = *can_hibernate;
|
||||
+ return ret;
|
||||
+}
|
||||
Index: xfce4-session-4.10.1/xfce4-session/xfsm-systemd.h
|
||||
===================================================================
|
||||
--- xfce4-session-4.10.1.orig/xfce4-session/xfsm-systemd.h
|
||||
+++ xfce4-session-4.10.1/xfce4-session/xfsm-systemd.h
|
||||
@@ -42,6 +42,12 @@ gboolean xfsm_systemd_try_restart (
|
||||
gboolean xfsm_systemd_try_shutdown (XfsmSystemd *systemd,
|
||||
GError **error);
|
||||
|
||||
+gboolean xfsm_systemd_try_suspend (XfsmSystemd *systemd,
|
||||
+ GError **error);
|
||||
+
|
||||
+gboolean xfsm_systemd_try_hibernate (XfsmSystemd *systemd,
|
||||
+ GError **error);
|
||||
+
|
||||
gboolean xfsm_systemd_can_restart (XfsmSystemd *systemd,
|
||||
gboolean *can_restart,
|
||||
GError **error);
|
||||
@@ -50,6 +56,16 @@ gboolean xfsm_systemd_can_shutdown (
|
||||
gboolean *can_shutdown,
|
||||
GError **error);
|
||||
|
||||
+gboolean xfsm_systemd_can_suspend (XfsmSystemd *systemd,
|
||||
+ gboolean *can_suspend,
|
||||
+ gboolean *auth_suspend,
|
||||
+ GError **error);
|
||||
+
|
||||
+gboolean xfsm_systemd_can_hibernate (XfsmSystemd *systemd,
|
||||
+ gboolean *can_hibernate,
|
||||
+ gboolean *auth_hibernate,
|
||||
+ GError **error);
|
||||
+
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __XFSM_SYSTEMD_H__ */
|
||||
Index: xfce4-session-4.10.1/xfce4-session/xfsm-shutdown.c
|
||||
===================================================================
|
||||
--- xfce4-session-4.10.1.orig/xfce4-session/xfsm-shutdown.c
|
||||
+++ xfce4-session-4.10.1/xfce4-session/xfsm-shutdown.c
|
||||
@@ -63,15 +63,15 @@
|
||||
#include <xfce4-session/xfsm-shutdown.h>
|
||||
#include <xfce4-session/xfsm-compat-gnome.h>
|
||||
#include <xfce4-session/xfsm-compat-kde.h>
|
||||
+#include <xfce4-session/xfsm-consolekit.h>
|
||||
#include <xfce4-session/xfsm-fadeout.h>
|
||||
#include <xfce4-session/xfsm-global.h>
|
||||
#include <xfce4-session/xfsm-legacy.h>
|
||||
#include <xfce4-session/xfsm-upower.h>
|
||||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
+#define LOGIND_RUNNING() (access ("/run/systemd/seats/", F_OK) >= 0)
|
||||
#include <xfce4-session/xfsm-systemd.h>
|
||||
-#else
|
||||
-#include <xfce4-session/xfsm-consolekit.h>
|
||||
#endif
|
||||
|
||||
static void xfsm_shutdown_finalize (GObject *object);
|
||||
@@ -98,9 +98,8 @@ struct _XfsmShutdown
|
||||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
XfsmSystemd *systemd;
|
||||
-#else
|
||||
- XfsmConsolekit *consolekit;
|
||||
#endif
|
||||
+ XfsmConsolekit *consolekit;
|
||||
XfsmUPower *upower;
|
||||
|
||||
/* kiosk settings */
|
||||
@@ -139,10 +138,14 @@ xfsm_shutdown_init (XfsmShutdown *shutdo
|
||||
XfceKiosk *kiosk;
|
||||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
- shutdown->systemd = xfsm_systemd_get ();
|
||||
-#else
|
||||
- shutdown->consolekit = xfsm_consolekit_get ();
|
||||
+ shutdown->consolekit = NULL;
|
||||
+ shutdown->systemd = NULL;
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ shutdown->systemd = xfsm_systemd_get ();
|
||||
+ else
|
||||
#endif
|
||||
+ shutdown->consolekit = xfsm_consolekit_get ();
|
||||
+
|
||||
shutdown->upower = xfsm_upower_get ();
|
||||
shutdown->helper_state = SUDO_NOT_INITIAZED;
|
||||
shutdown->helper_require_password = FALSE;
|
||||
@@ -162,10 +165,11 @@ xfsm_shutdown_finalize (GObject *object)
|
||||
XfsmShutdown *shutdown = XFSM_SHUTDOWN (object);
|
||||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
- g_object_unref (G_OBJECT (shutdown->systemd));
|
||||
-#else
|
||||
- g_object_unref (G_OBJECT (shutdown->consolekit));
|
||||
+ if (shutdown->systemd != NULL)
|
||||
+ g_object_unref (G_OBJECT (shutdown->systemd));
|
||||
#endif
|
||||
+ if (shutdown->consolekit != NULL)
|
||||
+ g_object_unref (G_OBJECT (shutdown->consolekit));
|
||||
g_object_unref (G_OBJECT (shutdown->upower));
|
||||
|
||||
/* close down helper */
|
||||
@@ -657,10 +661,11 @@ xfsm_shutdown_try_restart (XfsmShutdown
|
||||
return xfsm_shutdown_sudo_try_action (shutdown, XFSM_SHUTDOWN_RESTART, error);
|
||||
else
|
||||
#ifdef HAVE_SYSTEMD
|
||||
- return xfsm_systemd_try_restart (shutdown->systemd, error);
|
||||
-#else
|
||||
- return xfsm_consolekit_try_restart (shutdown->consolekit, error);
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ return xfsm_systemd_try_restart (shutdown->systemd, error);
|
||||
+ else
|
||||
#endif
|
||||
+ return xfsm_consolekit_try_restart (shutdown->consolekit, error);
|
||||
}
|
||||
|
||||
|
||||
@@ -678,10 +683,11 @@ xfsm_shutdown_try_shutdown (XfsmShutdown
|
||||
return xfsm_shutdown_sudo_try_action (shutdown, XFSM_SHUTDOWN_SHUTDOWN, error);
|
||||
else
|
||||
#ifdef HAVE_SYSTEMD
|
||||
- return xfsm_systemd_try_shutdown (shutdown->systemd, error);
|
||||
-#else
|
||||
- return xfsm_consolekit_try_shutdown (shutdown->consolekit, error);
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ return xfsm_systemd_try_shutdown (shutdown->systemd, error);
|
||||
+ else
|
||||
#endif
|
||||
+ return xfsm_consolekit_try_shutdown (shutdown->consolekit, error);
|
||||
}
|
||||
|
||||
|
||||
@@ -692,6 +698,11 @@ xfsm_shutdown_try_suspend (XfsmShutdown
|
||||
{
|
||||
g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
|
||||
|
||||
+#ifdef HAVE_SYSTEMD
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ return xfsm_systemd_try_suspend (shutdown->systemd, error);
|
||||
+ else
|
||||
+#endif
|
||||
return xfsm_upower_try_suspend (shutdown->upower, error);
|
||||
}
|
||||
|
||||
@@ -703,6 +714,11 @@ xfsm_shutdown_try_hibernate (XfsmShutdow
|
||||
{
|
||||
g_return_val_if_fail (XFSM_IS_SHUTDOWN (shutdown), FALSE);
|
||||
|
||||
+#ifdef HAVE_SYSTEMD
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ return xfsm_systemd_try_hibernate (shutdown->systemd, error);
|
||||
+ else
|
||||
+#endif
|
||||
return xfsm_upower_try_hibernate (shutdown->upower, error);
|
||||
}
|
||||
|
||||
@@ -722,10 +738,14 @@ xfsm_shutdown_can_restart (XfsmShutdown
|
||||
}
|
||||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
- if (xfsm_systemd_can_restart (shutdown->systemd, can_restart, error))
|
||||
-#else
|
||||
- if (xfsm_consolekit_can_restart (shutdown->consolekit, can_restart, error))
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ {
|
||||
+ if (xfsm_systemd_can_restart (shutdown->systemd, can_restart, error))
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ else
|
||||
#endif
|
||||
+ if (xfsm_consolekit_can_restart (shutdown->consolekit, can_restart, error))
|
||||
return TRUE;
|
||||
|
||||
if (xfsm_shutdown_sudo_init (shutdown, error))
|
||||
@@ -753,10 +773,14 @@ xfsm_shutdown_can_shutdown (XfsmShutdown
|
||||
}
|
||||
|
||||
#ifdef HAVE_SYSTEMD
|
||||
- if (xfsm_systemd_can_shutdown (shutdown->systemd, can_shutdown, error))
|
||||
-#else
|
||||
- if (xfsm_consolekit_can_shutdown (shutdown->consolekit, can_shutdown, error))
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ {
|
||||
+ if (xfsm_systemd_can_shutdown (shutdown->systemd, can_shutdown, error))
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ else
|
||||
#endif
|
||||
+ if (xfsm_consolekit_can_shutdown (shutdown->consolekit, can_shutdown, error))
|
||||
return TRUE;
|
||||
|
||||
if (xfsm_shutdown_sudo_init (shutdown, error))
|
||||
@@ -784,6 +808,12 @@ xfsm_shutdown_can_suspend (XfsmShutdown
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+#ifdef HAVE_SYSTEMD
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ return xfsm_systemd_can_suspend (shutdown->systemd, can_suspend,
|
||||
+ auth_suspend, error);
|
||||
+ else
|
||||
+#endif
|
||||
return xfsm_upower_can_suspend (shutdown->upower, can_suspend,
|
||||
auth_suspend, error);
|
||||
}
|
||||
@@ -804,6 +834,12 @@ xfsm_shutdown_can_hibernate (XfsmShutdow
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+#ifdef HAVE_SYSTEMD
|
||||
+ if (LOGIND_RUNNING())
|
||||
+ return xfsm_systemd_can_hibernate (shutdown->systemd, can_hibernate,
|
||||
+ auth_hibernate, error);
|
||||
+ else
|
||||
+#endif
|
||||
return xfsm_upower_can_hibernate (shutdown->upower, can_hibernate,
|
||||
auth_hibernate, error);
|
||||
}
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 6 17:43:56 UTC 2013 - gber@opensuse.org
|
||||
|
||||
- add xfce4-session-systemd-suspend-hibernate-support.patch in
|
||||
order to add systemd suspend/hibernate support (bnc#9952)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 7 09:28:05 UTC 2013 - gber@opensuse.org
|
||||
|
||||
|
@ -30,11 +30,12 @@ Source0: http://archive.xfce.org/src/xfce/xfce4-session/4.10/%{name}-%{ve
|
||||
Patch0: xfce4-session-simple-splash-remove-shadows.patch
|
||||
# PATCH-FIX-OPENSUSE xfce4-session-adapt-session-scripts.patch bnc#789057 gber@opensuse.org -- Adapt upstream sessions script to openSUSE
|
||||
Patch1: xfce4-session-adapt-session-scripts.patch
|
||||
%if 0%{?suse_version} > 1210
|
||||
# PATCH-FIX-UPSTREAM xfce4-session-systemd-suspend-hibernate-support.patch bnc#9952 gber@opensuse.org -- Add systemd suspend/hibernate support
|
||||
Patch2: xfce4-session-systemd-suspend-hibernate-support.patch
|
||||
BuildRequires: iceauth
|
||||
%endif
|
||||
BuildRequires: intltool
|
||||
BuildRequires: update-desktop-files
|
||||
BuildRequires: xfce4-dev-tools
|
||||
BuildRequires: xorg-x11
|
||||
BuildRequires: pkgconfig(dbus-1)
|
||||
BuildRequires: pkgconfig(dbus-glib-1)
|
||||
@ -59,11 +60,10 @@ Obsoletes: xfce-utils-lang <= 4.8.3
|
||||
Provides: xfce4-session-doc = %{version}
|
||||
Obsoletes: xfce4-session-doc <= 4.8.3
|
||||
Requires: %{name}-branding = %{version}
|
||||
%if 0%{?suse_version} < 1230
|
||||
Requires: ConsoleKit-x11
|
||||
%endif
|
||||
%if 0%{?suse_version} >= 1230
|
||||
Requires: systemd
|
||||
%else
|
||||
Requires: ConsoleKit-x11
|
||||
%endif
|
||||
Requires: xfce4-settings
|
||||
Requires: xfconf
|
||||
@ -117,8 +117,10 @@ This package provides the upstream look and feel for the Xfce Session Manager.
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
|
||||
%build
|
||||
xdt-autogen
|
||||
%configure \
|
||||
--disable-static
|
||||
make %{?_smp_mflags} V=1
|
||||
|
Loading…
Reference in New Issue
Block a user