From aeec117473e27be31b00b6b8109bc6b31a263bd0 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Wed, 20 Oct 2021 01:01:45 +0200 Subject: [PATCH] Linux: add org.mate.ScreenSaver as fallback --- rpcs3/display_sleep_control.cpp | 37 ++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/rpcs3/display_sleep_control.cpp b/rpcs3/display_sleep_control.cpp index 3a6f17faf374..db297d110a9b 100644 --- a/rpcs3/display_sleep_control.cpp +++ b/rpcs3/display_sleep_control.cpp @@ -23,8 +23,15 @@ bool display_sleep_control_supported() #if defined(_WIN32) || defined(__APPLE__) return true; #elif defined(HAVE_QTDBUS) - QDBusInterface interface("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", QDBusConnection::sessionBus()); - return interface.isValid(); + for (const QString& service : { "org.freedesktop.ScreenSaver", "org.mate.ScreenSaver" }) + { + QDBusInterface interface(service, "/ScreenSaver", service, QDBusConnection::sessionBus()); + if (interface.isValid()) + { + return true; + } + } + return false; #else return false; #endif @@ -48,8 +55,15 @@ void enable_display_sleep() #elif defined(HAVE_QTDBUS) if (s_dbus_cookie != 0) { - QDBusInterface interface("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", QDBusConnection::sessionBus()); - interface.call("UnInhibit", s_dbus_cookie); + for (const QString& service : { "org.freedesktop.ScreenSaver", "org.mate.ScreenSaver" }) + { + QDBusInterface interface(service, "/ScreenSaver", service, QDBusConnection::sessionBus()); + if (interface.isValid()) + { + interface.call("UnInhibit", s_dbus_cookie); + break; + } + } s_dbus_cookie = 0; } #endif @@ -67,11 +81,18 @@ void disable_display_sleep() #elif defined(__APPLE__) IOPMAssertionCreateWithName(kIOPMAssertionTypePreventUserIdleDisplaySleep, kIOPMAssertionLevelOn, CFSTR("Game running"), &s_pm_assertion); #elif defined(HAVE_QTDBUS) - QDBusInterface interface("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", QDBusConnection::sessionBus()); - QDBusReply reply = interface.call("Inhibit", "rpcs3", "Game running"); - if (reply.isValid()) + for (const QString& service : { "org.freedesktop.ScreenSaver", "org.mate.ScreenSaver" }) { - s_dbus_cookie = reply.value(); + QDBusInterface interface(service, "/ScreenSaver", service, QDBusConnection::sessionBus()); + if (interface.isValid()) + { + QDBusReply reply = interface.call("Inhibit", "rpcs3", "Game running"); + if (reply.isValid()) + { + s_dbus_cookie = reply.value(); + } + break; + } } #endif }