From 173aaca316daae968fc82cbaa1e333610ec847a4 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 18 Nov 2019 15:25:51 +0100 Subject: [server] Periodically deactivate xscreensaver when clients are connected --- src/server/util/platform/screensaver.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/server/util/platform/screensaver.cpp') diff --git a/src/server/util/platform/screensaver.cpp b/src/server/util/platform/screensaver.cpp index cdd6ee1..569a4a3 100644 --- a/src/server/util/platform/screensaver.cpp +++ b/src/server/util/platform/screensaver.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #ifdef X11_Xscreensaver_FOUND @@ -17,6 +18,7 @@ namespace { Display *display = nullptr; bool extensionSupported = false; bool dpmsSupported = false; + QTimer *timer = nullptr; bool init() { @@ -51,16 +53,25 @@ namespace ScreenSaver { return; } #endif - // TODO: Maybe try some fallback, call xset, or trigger some event periodically + if (allow) { + if (timer != nullptr) { + timer->stop(); + } + } else { + if (timer == nullptr) { + timer = new QTimer; + QObject::connect(timer, &QTimer::timeout, forceUnlockAndScreenOn); + } + timer->setSingleShot(false); + timer->start(55000); + } } void forceUnlockAndScreenOn() { if (!init()) return; - QProcess process; - process.start("xscreensaver-command", QStringList() << "-deactivate"); - process.waitForFinished(100); + QProcess::startDetached("xscreensaver-command", QStringList() << "-deactivate"); #ifdef X11_dpms_FOUND CARD16 power_level; BOOL state; -- cgit v1.2.3-55-g7522