From 23a8f69d9f02f08ba800432685d643369deb30b1 Mon Sep 17 00:00:00 2001 From: Alexander Golubev Date: Wed, 30 Oct 2024 00:45:27 +0300 Subject: [PATCH 1/2] Add a fallback to let mplayer control the screensaver Bug: https://github.com/smplayer-dev/smplayer/issues/1056 Signed-off-by: Alexander Golubev --- src/core.cpp | 6 +++++- src/powersaving.cpp | 4 ++++ src/powersaving.h | 2 ++ src/powersaving_mac.cpp | 4 ++++ src/powersaving_mac.h | 2 ++ src/screensaver.cpp | 8 ++++++++ src/screensaver.h | 2 ++ src/winscreensaver.cpp | 8 ++++++++ src/winscreensaver.h | 2 ++ 9 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/core.cpp b/src/core.cpp index 7b06bd2b5..9d042fe55 100644 --- a/src/core.cpp +++ b/src/core.cpp @@ -1851,7 +1851,11 @@ void Core::startMplayer( QString file, double seek ) { #ifndef USE_POWERSAVING proc->setOption("stop-xscreensaver", pref->disable_screensaver); #else - proc->setOption("stop-xscreensaver", false); + if (screensaver->isValid()) { + proc->setOption("stop-xscreensaver", false); + } else { // fallback to let mplayer control the screensaver + proc->setOption("stop-xscreensaver", pref->disable_screensaver); + } #endif #endif diff --git a/src/powersaving.cpp b/src/powersaving.cpp index 110f743cb..e81afc713 100644 --- a/src/powersaving.cpp +++ b/src/powersaving.cpp @@ -37,6 +37,10 @@ PowerSaving::PowerSaving(QObject * parent) PowerSaving::~PowerSaving() { } +bool PowerSaving::isValid() { + return interface->isValid(); +} + void PowerSaving::inhibit() { qDebug("PowerSaving::inhibit"); QDBusReply reply = interface->call("Inhibit", "smplayer", "Playing media"); diff --git a/src/powersaving.h b/src/powersaving.h index cd34b9a3e..a007d59a8 100644 --- a/src/powersaving.h +++ b/src/powersaving.h @@ -32,6 +32,8 @@ class PowerSaving : public QObject PowerSaving(QObject * parent = 0); ~PowerSaving(); + bool isValid(); + public slots: void inhibit(); void uninhibit(); diff --git a/src/powersaving_mac.cpp b/src/powersaving_mac.cpp index 034c78c77..f348c5ab9 100644 --- a/src/powersaving_mac.cpp +++ b/src/powersaving_mac.cpp @@ -29,6 +29,10 @@ PowerSaving::PowerSaving(QObject * parent) PowerSaving::~PowerSaving() { } +bool PowerSaving::isValid() { + return true; +} + void PowerSaving::inhibit() { qDebug("PowerSaving::inhibit"); diff --git a/src/powersaving_mac.h b/src/powersaving_mac.h index 4daca786b..b51609569 100644 --- a/src/powersaving_mac.h +++ b/src/powersaving_mac.h @@ -31,6 +31,8 @@ class PowerSaving : public QObject PowerSaving(QObject * parent = 0); ~PowerSaving(); + bool isValid(); + public slots: void inhibit(); void uninhibit(); diff --git a/src/screensaver.cpp b/src/screensaver.cpp index fd3efb8c0..71dc0e0a0 100644 --- a/src/screensaver.cpp +++ b/src/screensaver.cpp @@ -42,6 +42,14 @@ ScreenSaver::~ScreenSaver() { #endif } +bool ScreenSaver::isValid() { +#ifdef Q_OS_WIN + return win_screensaver->isValid(); +#else + return power_saving->isValid(); +#endif +} + void ScreenSaver::enable() { #ifdef Q_OS_WIN win_screensaver->enable(); diff --git a/src/screensaver.h b/src/screensaver.h index df61b3ed9..7b00dc106 100644 --- a/src/screensaver.h +++ b/src/screensaver.h @@ -32,6 +32,8 @@ class ScreenSaver : public QObject ScreenSaver(QObject * parent = 0); ~ScreenSaver(); + bool isValid(); + public slots: void enable(); void disable(); diff --git a/src/winscreensaver.cpp b/src/winscreensaver.cpp index 48df187a8..14f188b04 100644 --- a/src/winscreensaver.cpp +++ b/src/winscreensaver.cpp @@ -48,6 +48,14 @@ WinScreenSaver::~WinScreenSaver() { #endif } +bool WinScreenSaver::isValid() { +#ifndef Q_OS_OS2 + return true; +#else + return SSCore_TempDisable && SSCore_TempEnable; +#endif +} + void WinScreenSaver::retrieveState() { qDebug("WinScreenSaver::retrieveState"); diff --git a/src/winscreensaver.h b/src/winscreensaver.h index 13c8f608d..b7d946720 100644 --- a/src/winscreensaver.h +++ b/src/winscreensaver.h @@ -34,6 +34,8 @@ class WinScreenSaver WinScreenSaver(); ~WinScreenSaver(); + bool isValid(); + void disable(); void enable(); From e346af95ffb156448c55232d8806e0c24bfab320 Mon Sep 17 00:00:00 2001 From: Alexander Golubev Date: Fri, 1 Nov 2024 02:44:56 +0300 Subject: [PATCH 2/2] Avoid passing -stop-xscreensaver to mplayer on non-X11 systems Signed-off-by: Alexander Golubev --- src/mplayeroptions.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mplayeroptions.cpp b/src/mplayeroptions.cpp index 65cdec00e..a59815e47 100644 --- a/src/mplayeroptions.cpp +++ b/src/mplayeroptions.cpp @@ -135,8 +135,10 @@ void MplayerProcess::setOption(const QString & option_name, const QVariant & val } else if (option_name == "stop-xscreensaver") { +#ifdef OS_UNIX_NOT_MAC bool stop_ss = value.toBool(); if (stop_ss) arg << "-stop-xscreensaver"; else arg << "-nostop-xscreensaver"; +#endif } else if (option_name == "correct-pts") {