summaryrefslogtreecommitdiff
path: root/staging/kdebase-workspace/logind-support.patch
blob: 9de205400dcd9ab7c7c924177a3aaefe9f8dda30 (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
From: Lukas Tinkl <lukas@kde.org>
Date: Fri, 05 Oct 2012 09:57:13 +0000
Subject: store the filedescriptor in a member variable
X-Git-Url: http://quickgit.kde.org/?p=kde-workspace.git&amp;a=commitdiff&amp;h=a18b78d7da8cb8d627ad2e85f666bfcf1a2721e1
---
store the filedescriptor in a member variable

make systemd-inhibit work as intended, PowerDevil now handles
power/sleep/lid buttons as intended

BUG: 307412
---


--- a/powerdevil/daemon/powerdevilpolicyagent.cpp
+++ b/powerdevil/daemon/powerdevilpolicyagent.cpp
@@ -29,7 +29,6 @@
 #include <QtDBus/QDBusPendingReply>
 #include <QtDBus/QDBusConnectionInterface>
 #include <QtDBus/QDBusServiceWatcher>
-#include <QtDBus/QDBusUnixFileDescriptor>
 
 #include <KGlobal>
 #include <KDebug>
@@ -225,6 +224,9 @@
         onActiveSessionChanged(m_activeSessionPath);
 
         // inhibit systemd handling of power/sleep/lid buttons
+        // http://www.freedesktop.org/wiki/Software/systemd/inhibit
+        kDebug() << "fd passing available:" << bool(managerIface.connection().connectionCapabilities() & QDBusConnection::UnixFileDescriptorPassing);
+
         QVariantList args;
         args << "handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch"; // what
         args << "PowerDevil"; // who
@@ -232,8 +234,9 @@
         args << "block"; // mode
         QDBusPendingReply<QDBusUnixFileDescriptor> desc = managerIface.asyncCallWithArgumentList("Inhibit", args);
         desc.waitForFinished();
-        if (desc.isValid() && desc.value().isValid()) {
-            kDebug() << "systemd powersave events handling inhibited";
+        if (desc.isValid()) {
+            m_systemdInhibitFd = desc.value();
+            kDebug() << "systemd powersave events handling inhibited, descriptor:" << m_systemdInhibitFd.fileDescriptor();
         }
         else
             kWarning() << "failed to inhibit systemd powersave handling";

--- a/powerdevil/daemon/powerdevilpolicyagent.h
+++ b/powerdevil/daemon/powerdevilpolicyagent.h
@@ -27,6 +27,7 @@
 #include <QtCore/QWeakPointer>
 
 #include <QtDBus/QDBusContext>
+#include <QtDBus/QDBusUnixFileDescriptor>
 
 #include <kdemacros.h>
 
@@ -108,6 +109,7 @@
     QString m_activeSessionPath;
     QWeakPointer< QDBusInterface > m_sdSessionInterface;
     QWeakPointer< QDBusInterface > m_sdSeatInterface;
+    QDBusUnixFileDescriptor m_systemdInhibitFd;
 
     // ConsoleKit support
     bool m_ckAvailable;