зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
cb20af318d
Коммит
9982a76fe9
|
@ -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]);
|
||||
|
|
Загрузка…
Ссылка в новой задаче