Commit a18b78d7 authored by Lukáš Tinkl's avatar Lukáš Tinkl
Browse files

store the filedescriptor in a member variable

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

BUG: 307412
parent 79d25320
......@@ -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";
......
......@@ -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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment