commit:     21ed02f5976d3fedfac8e3d7b894685593103c33
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Nov  9 14:35:21 2021 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Dec 10 15:11:03 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=21ed02f5

kde-plasma/libkworkspace: Fix sleep/suspend race condition

(not fixed in 5.23.4 yet)

See also: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1164

Thanks-to: Joe Breuer <kde <AT> jmbreuer.net>
Bug: https://bugs.gentoo.org/818124
Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 ...bkworkspace-5.23.3-synchronous-dbus-calls.patch | 48 +++++++++++++++++
 .../libkworkspace/libkworkspace-5.23.4-r1.ebuild   | 60 ++++++++++++++++++++++
 2 files changed, 108 insertions(+)

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 <[email protected]>
+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.4-r1.ebuild 
b/kde-plasma/libkworkspace/libkworkspace-5.23.4-r1.ebuild
new file mode 100644
index 000000000000..f0dd4898d65b
--- /dev/null
+++ b/kde-plasma/libkworkspace/libkworkspace-5.23.4-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_TEST="true"
+KDE_ORG_NAME="plasma-workspace"
+KFMIN=5.86.0
+PVCUT=$(ver_cut 1-3)
+QTMIN=5.15.2
+inherit ecm kde.org
+
+DESCRIPTION="Workspace library to interact with the Plasma session manager"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE=""
+
+RDEPEND="
+       >=dev-qt/qtdbus-${QTMIN}:5
+       >=dev-qt/qtx11extras-${QTMIN}:5
+       >=kde-frameworks/kconfig-${KFMIN}:5
+       >=kde-frameworks/kcoreaddons-${KFMIN}:5
+       >=kde-frameworks/ki18n-${KFMIN}:5
+       >=kde-frameworks/kwindowsystem-${KFMIN}:5
+       >=kde-plasma/kscreenlocker-${PVCUT}:5
+       x11-libs/libICE
+       x11-libs/libSM
+       x11-libs/libX11
+       x11-libs/libXau
+"
+DEPEND="${RDEPEND}
+       >=kde-frameworks/kinit-${KFMIN}:5
+       >=kde-plasma/kwin-${PVCUT}:5
+"
+
+S="${S}/${PN}"
+
+PATCHES=(
+       # Pending: 
https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1164
+       "${FILESDIR}"/${PN}-5.23.3-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
+               find ../po -type f -name "*po" -and -not -name "libkworkspace*" 
-delete || die
+               rm -rf po/*/docs || die
+               cp -a ../po ./ || die
+       fi
+
+       eapply "${FILESDIR}/${PN}-5.22.80-standalone.patch"
+       sed -e "/set/s/GENTOO_PV/$(ver_cut 1-3)/" -i CMakeLists.txt || die
+       cat >> CMakeLists.txt <<- _EOF_ || die
+               ki18n_install(po)
+       _EOF_
+
+       ecm_src_prepare
+}

Reply via email to