aboutsummaryrefslogtreecommitdiff
blob: 411bebf70412f9230dda098c3ac3abf14f176a26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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