Connect to Logind's PauseDevice signal
If it emits a "pause" signal, we must acknowledge that we paused the device.
This commit is contained in:
parent
2c5337074f
commit
3a9adcac91
2 changed files with 14 additions and 0 deletions
13
logind.cpp
13
logind.cpp
|
@ -237,6 +237,9 @@ void LogindIntegration::takeControl()
|
|||
qCDebug(KWIN_CORE) << "Gained session control";
|
||||
m_sessionControl = true;
|
||||
emit hasSessionControlChanged(true);
|
||||
m_bus.connect(s_login1Service, m_sessionPath,
|
||||
s_login1SessionInterface, QStringLiteral("PauseDevice"),
|
||||
this, SLOT(pauseDevice(uint,uint,QString)));
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -292,4 +295,14 @@ void LogindIntegration::releaseDevice(int fd)
|
|||
m_bus.asyncCall(message);
|
||||
}
|
||||
|
||||
void LogindIntegration::pauseDevice(uint devMajor, uint devMinor, const QString &type)
|
||||
{
|
||||
if (QString::compare(type, QStringLiteral("pause"), Qt::CaseInsensitive) == 0) {
|
||||
// unconditionally call complete
|
||||
QDBusMessage message = QDBusMessage::createMethodCall(s_login1Service, m_sessionPath, s_login1SessionInterface, QStringLiteral("PauseDeviceComplete"));
|
||||
message.setArguments(QVariantList({QVariant(devMajor), QVariant(devMinor)}));
|
||||
m_bus.asyncCall(message);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
1
logind.h
1
logind.h
|
@ -64,6 +64,7 @@ Q_SIGNALS:
|
|||
private Q_SLOTS:
|
||||
void getSessionActive();
|
||||
void getVirtualTerminal();
|
||||
void pauseDevice(uint major, uint minor, const QString &type);
|
||||
|
||||
private:
|
||||
friend class LogindTest;
|
||||
|
|
Loading…
Reference in a new issue