Linux: add org.mate.ScreenSaver as fallback

This commit is contained in:
Megamouse 2021-10-20 01:01:45 +02:00
parent 9c1f258be3
commit cb953a418f
1 changed files with 29 additions and 8 deletions

View File

@ -23,8 +23,15 @@ bool display_sleep_control_supported()
#if defined(_WIN32) || defined(__APPLE__) #if defined(_WIN32) || defined(__APPLE__)
return true; return true;
#elif defined(HAVE_QTDBUS) #elif defined(HAVE_QTDBUS)
QDBusInterface interface("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", QDBusConnection::sessionBus()); for (const QString& service : { "org.freedesktop.ScreenSaver", "org.mate.ScreenSaver" })
return interface.isValid(); {
QDBusInterface interface(service, "/ScreenSaver", service, QDBusConnection::sessionBus());
if (interface.isValid())
{
return true;
}
}
return false;
#else #else
return false; return false;
#endif #endif
@ -48,8 +55,15 @@ void enable_display_sleep()
#elif defined(HAVE_QTDBUS) #elif defined(HAVE_QTDBUS)
if (s_dbus_cookie != 0) if (s_dbus_cookie != 0)
{ {
QDBusInterface interface("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", QDBusConnection::sessionBus()); for (const QString& service : { "org.freedesktop.ScreenSaver", "org.mate.ScreenSaver" })
interface.call("UnInhibit", s_dbus_cookie); {
QDBusInterface interface(service, "/ScreenSaver", service, QDBusConnection::sessionBus());
if (interface.isValid())
{
interface.call("UnInhibit", s_dbus_cookie);
break;
}
}
s_dbus_cookie = 0; s_dbus_cookie = 0;
} }
#endif #endif
@ -67,11 +81,18 @@ void disable_display_sleep()
#elif defined(__APPLE__) #elif defined(__APPLE__)
IOPMAssertionCreateWithName(kIOPMAssertionTypePreventUserIdleDisplaySleep, kIOPMAssertionLevelOn, CFSTR("Game running"), &s_pm_assertion); IOPMAssertionCreateWithName(kIOPMAssertionTypePreventUserIdleDisplaySleep, kIOPMAssertionLevelOn, CFSTR("Game running"), &s_pm_assertion);
#elif defined(HAVE_QTDBUS) #elif defined(HAVE_QTDBUS)
QDBusInterface interface("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", QDBusConnection::sessionBus()); for (const QString& service : { "org.freedesktop.ScreenSaver", "org.mate.ScreenSaver" })
QDBusReply<u32> reply = interface.call("Inhibit", "rpcs3", "Game running");
if (reply.isValid())
{ {
s_dbus_cookie = reply.value(); QDBusInterface interface(service, "/ScreenSaver", service, QDBusConnection::sessionBus());
if (interface.isValid())
{
QDBusReply<u32> reply = interface.call("Inhibit", "rpcs3", "Game running");
if (reply.isValid())
{
s_dbus_cookie = reply.value();
}
break;
}
} }
#endif #endif
} }