fix(core): use standard screen saver lock API

main
Reion Wong 3 weeks ago
parent a096e305a1
commit 5ce731d54f

@ -19,10 +19,11 @@
***************************************************************************/ ***************************************************************************/
#include "dimdisplayaction.h" #include "dimdisplayaction.h"
#include "screenlocker_interface.h"
#include <QSettings> #include <QSettings>
#include <QTimer> #include <QTimer>
#include <QDBusPendingCall> #include <QDBusPendingCall>
#include <QProcess>
#include <QDebug> #include <QDebug>
DimDisplayAction::DimDisplayAction(QObject *parent) DimDisplayAction::DimDisplayAction(QObject *parent)
@ -73,7 +74,11 @@ void DimDisplayAction::onIdleTimeout(int msec)
} }
if (m_lock) { if (m_lock) {
QProcess::startDetached("cutefish-screenlocker", QStringList()); OrgFreedesktopScreenSaverInterface screenSaver(
QStringLiteral("org.freedesktop.ScreenSaver"),
QStringLiteral("/ScreenSaver"),
QDBusConnection::sessionBus());
screenSaver.Lock();
} }
} else if (sec == (m_dimOnIdleTime * 3 / 4)) { } else if (sec == (m_dimOnIdleTime * 3 / 4)) {

@ -21,12 +21,15 @@
#include <QCommandLineParser> #include <QCommandLineParser>
#include <QDBusInterface> #include <QDBusInterface>
#include <QApplication> #include <QApplication>
#include <QProcess>
const static QString s_dbusName = "com.cutefish.Session"; const static QString s_dbusName = "com.cutefish.Session";
const static QString s_pathName = "/Session"; const static QString s_pathName = "/Session";
const static QString s_interfaceName = "com.cutefish.Session"; const static QString s_interfaceName = "com.cutefish.Session";
const static QString s_screenSaverService = "org.freedesktop.ScreenSaver";
const static QString s_screenSaverPath = "/ScreenSaver";
const static QString s_screenSaverInterface = "org.freedesktop.ScreenSaver";
Actions::Actions(QObject *parent) Actions::Actions(QObject *parent)
: QObject(parent) : QObject(parent)
{ {
@ -59,7 +62,13 @@ void Actions::reboot()
void Actions::lockScreen() void Actions::lockScreen()
{ {
QProcess::startDetached("cutefish-screenlocker", QStringList()); QDBusInterface iface(s_screenSaverService,
s_screenSaverPath,
s_screenSaverInterface,
QDBusConnection::sessionBus());
if (iface.isValid()) {
iface.call(QStringLiteral("Lock"));
}
qApp->exit(0); qApp->exit(0);
} }

Loading…
Cancel
Save