summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2021-11-09 15:35:21 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2021-11-09 18:14:20 +0100
commit5c3a65d7d43f8204ab5aa011bd8393d4e242a102 (patch)
treefe9b63790b28db04d17e4fd372e9856916427395 /kde-plasma/libkworkspace
parentkde-plasma/libkworkspace: 5.23.3 version bump (diff)
downloadgentoo-5c3a65d7d43f8204ab5aa011bd8393d4e242a102.tar.gz
gentoo-5c3a65d7d43f8204ab5aa011bd8393d4e242a102.tar.bz2
gentoo-5c3a65d7d43f8204ab5aa011bd8393d4e242a102.zip
kde-plasma/libkworkspace: Fix sleep/suspend race condition
See also: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1164 Thanks-to: Joe Breuer <kde@jmbreuer.net> Bug: https://bugs.gentoo.org/818124 Package-Manager: Portage-3.0.28, Repoman-3.0.3 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'kde-plasma/libkworkspace')
-rw-r--r--kde-plasma/libkworkspace/files/libkworkspace-5.23.3-synchronous-dbus-calls.patch48
-rw-r--r--kde-plasma/libkworkspace/libkworkspace-5.23.3.ebuild5
2 files changed, 53 insertions, 0 deletions
diff --git a/kde-plasma/libkworkspace/files/libkworkspace-5.23.3-synchronous-dbus-calls.patch b/kde-plasma/libkworkspace/files/libkworkspace-5.23.3-synchronous-dbus-calls.patch
new file mode 100644
index 000000000000..411bebf70412
--- /dev/null
+++ b/kde-plasma/libkworkspace/files/libkworkspace-5.23.3-synchronous-dbus-calls.patch
@@ -0,0 +1,48 @@
+From 9ecd45f28dc5c3a4b1716d09e0ba121ec5fb2a50 Mon Sep 17 00:00:00 2001
+From: Joe Breuer <kde@jmbreuer.net>
+Date: Mon, 1 Nov 2021 07:19:51 +0000
+Subject: [PATCH] Fix sleep/suspend sometimes not working ... from
+ ksmserver-logout-greeter, by making the DBus calls synchronous.
+
+---
+ libkworkspace/sessionmanagementbackend.cpp | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/sessionmanagementbackend.cpp b/sessionmanagementbackend.cpp
+index 83cd39395..a77a8a475 100644
+--- a/sessionmanagementbackend.cpp
++++ b/sessionmanagementbackend.cpp
+@@ -137,7 +137,6 @@ void LogindSessionBackend::shutdown()
+ {
+ // logind will confirm credentials with the caller, if the app quits after sending this
+ // this may fail
+- // its not really needed for suspend tasks where the calling app won't be closing
+ m_login1->PowerOff(true).waitForFinished();
+ }
+
+@@ -148,17 +147,19 @@ void LogindSessionBackend::reboot()
+
+ void LogindSessionBackend::suspend()
+ {
+- m_login1->Suspend(true);
++ // these need to be synchronous as well - ksmserver-logout-greeter specifically calls these
++ // and will quit immediately after
++ m_login1->Suspend(true).waitForFinished();
+ }
+
+ void LogindSessionBackend::hybridSuspend()
+ {
+- m_login1->HybridSleep(true);
++ m_login1->HybridSleep(true).waitForFinished();
+ }
+
+ void LogindSessionBackend::hibernate()
+ {
+- m_login1->Hibernate(true);
++ m_login1->Hibernate(true).waitForFinished();;
+ }
+
+ bool LogindSessionBackend::canShutdown() const
+--
+GitLab
+
diff --git a/kde-plasma/libkworkspace/libkworkspace-5.23.3.ebuild b/kde-plasma/libkworkspace/libkworkspace-5.23.3.ebuild
index aacfb311c9ba..12ee0890aa83 100644
--- a/kde-plasma/libkworkspace/libkworkspace-5.23.3.ebuild
+++ b/kde-plasma/libkworkspace/libkworkspace-5.23.3.ebuild
@@ -37,6 +37,11 @@ DEPEND="${RDEPEND}
S="${S}/${PN}"
+PATCHES=(
+ # Pending: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1164
+ "${FILESDIR}"/${P}-synchronous-dbus-calls.patch # bug 818124
+)
+
src_prepare() {
# delete colliding libkworkspace translations, let ecm_src_prepare do its magic
if [[ ${KDE_BUILD_TYPE} = release ]]; then