[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kde-workspace/KDE/4.9] powerdevil/daemon: store the filedescriptor in a member variable
From:       Lukas Tinkl <lukas () kde ! org>
Date:       2012-10-05 9:58:47
Message-ID: 20121005095847.417F6A605D () git ! kde ! org
[Download RAW message or body]

Git commit a18b78d7da8cb8d627ad2e85f666bfcf1a2721e1 by Lukas Tinkl.
Committed on 05/10/2012 at 11:57.
Pushed by lukas into branch 'KDE/4.9'.

store the filedescriptor in a member variable

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

BUG: 307412

M  +6    -3    powerdevil/daemon/powerdevilpolicyagent.cpp
M  +2    -0    powerdevil/daemon/powerdevilpolicyagent.h

http://commits.kde.org/kde-workspace/a18b78d7da8cb8d627ad2e85f666bfcf1a2721e1

diff --git a/powerdevil/daemon/powerdevilpolicyagent.cpp \
b/powerdevil/daemon/powerdevilpolicyagent.cpp index efc3476..70588db 100644
--- 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 @@ void PolicyAgent::onSessionHandlerRegistered(const QString & \
serviceName)  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 @@ void PolicyAgent::onSessionHandlerRegistered(const QString & \
serviceName)  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";
diff --git a/powerdevil/daemon/powerdevilpolicyagent.h \
b/powerdevil/daemon/powerdevilpolicyagent.h index 6001846..a046497 100644
--- 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 @@ private:
     QString m_activeSessionPath;
     QWeakPointer< QDBusInterface > m_sdSessionInterface;
     QWeakPointer< QDBusInterface > m_sdSeatInterface;
+    QDBusUnixFileDescriptor m_systemdInhibitFd;
 
     // ConsoleKit support
     bool m_ckAvailable;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic