mirror of
https://gitdl.cn/https://github.com/chakralinux/desktop.git
synced 2025-01-25 11:02:13 +08:00
66 lines
2.7 KiB
Diff
66 lines
2.7 KiB
Diff
commit 29a65c6f984f3bcb5792b0b89061e45c925bbe7a
|
|
Author: Lukas Tinkl <lukas@kde.org>
|
|
Date: Fri Oct 5 11:57:13 2012 +0200
|
|
|
|
store the filedescriptor in a member variable
|
|
|
|
make systemd-inhibit work as intended, PowerDevil now handles
|
|
power/sleep/lid buttons as intended
|
|
|
|
BUG: 307412
|
|
|
|
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;
|