Bug 1877022 [Wayland] Don't switch away from native wake lock inhibitor r=emilio

Better to try inhibit native wake lock again that to switch to Unsupported one and disable it at all.

Differential Revision: https://phabricator.services.mozilla.com/D201709
This commit is contained in:
stransky 2024-02-19 22:17:16 +00:00
Родитель cb20af318d
Коммит 9982a76fe9
1 изменённых файлов: 24 добавлений и 2 удалений

Просмотреть файл

@ -137,6 +137,7 @@ class WakeLockTopic {
bool UninhibitWaylandIdle();
#endif
bool IsNativeWakeLock(int aWakeLockType);
bool IsWakeLockTypeAvailable(int aWakeLockType);
bool SwitchToNextWakeLockType();
@ -779,8 +780,14 @@ nsresult WakeLockTopic::InhibitScreensaver() {
mShouldInhibit = true;
// Iterate through wake lock types in case of failure.
while (!SendInhibit() && SwitchToNextWakeLockType()) {
;
while (!SendInhibit()) {
// We don't switch away from native locks. Just try again.
if (IsNativeWakeLock(sWakeLockType)) {
return NS_ERROR_FAILURE;
}
if (!SwitchToNextWakeLockType()) {
return NS_ERROR_FAILURE;
}
}
return (sWakeLockType != Unsupported) ? NS_OK : NS_ERROR_FAILURE;
@ -850,6 +857,21 @@ bool WakeLockTopic::IsWakeLockTypeAvailable(int aWakeLockType) {
}
}
bool WakeLockTopic::IsNativeWakeLock(int aWakeLockType) {
switch (aWakeLockType) {
#if defined(MOZ_X11)
case XScreenSaver:
return true;
#endif
#if defined(MOZ_WAYLAND)
case WaylandIdleInhibit:
return true;
#endif
default:
return false;
}
}
bool WakeLockTopic::SwitchToNextWakeLockType() {
WAKE_LOCK_LOG("WakeLockTopic::SwitchToNextWakeLockType() WakeLockType %s",
WakeLockTypeNames[sWakeLockType]);