From 1f29b25d99b651646bd3113dd1324f86cf4e6d02 Mon Sep 17 00:00:00 2001 From: stransky Date: Thu, 21 Dec 2023 12:54:34 +0000 Subject: [PATCH] Bug 1859222 [Linux] Allow zero inhibit token r=emilio Differential Revision: https://phabricator.services.mozilla.com/D195762 --- widget/gtk/WakeLockListener.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/widget/gtk/WakeLockListener.cpp b/widget/gtk/WakeLockListener.cpp index b724504f580c..0b38b4657b97 100644 --- a/widget/gtk/WakeLockListener.cpp +++ b/widget/gtk/WakeLockListener.cpp @@ -175,7 +175,7 @@ class WakeLockTopic { // mInhibitRequestID is received from success screen saver inhibit call // and it's needed for screen saver enablement. - uint32_t mInhibitRequestID = 0; + Maybe mInhibitRequestID; RefPtr mCancellable; // Used to uninhibit org.freedesktop.portal.Inhibit request @@ -190,13 +190,13 @@ int WakeLockTopic::sWakeLockType = Initial; #ifdef MOZ_ENABLE_DBUS void WakeLockTopic::DBusInhibitSucceeded(uint32_t aInhibitRequestID) { mWaitingForDBusInhibit = false; - mInhibitRequestID = aInhibitRequestID; + mInhibitRequestID = Some(aInhibitRequestID); mInhibited = true; WAKE_LOCK_LOG( "WakeLockTopic::DBusInhibitSucceeded(), mInhibitRequestID %u " "mShouldInhibit %d", - mInhibitRequestID, mShouldInhibit); + *mInhibitRequestID, mShouldInhibit); // Uninhibit was requested before inhibit request was finished. // So ask for it now. @@ -235,12 +235,12 @@ void WakeLockTopic::DBusUninhibitSucceeded() { void WakeLockTopic::DBusUninhibitFailed() { WAKE_LOCK_LOG("WakeLockTopic::DBusUninhibitFailed()"); mWaitingForDBusUninhibit = false; - mInhibitRequestID = 0; + mInhibitRequestID = Nothing(); } void WakeLockTopic::ClearDBusInhibitToken() { mRequestObjectPath.Truncate(); - mInhibitRequestID = 0; + mInhibitRequestID = Nothing(); } void WakeLockTopic::DBusInhibitScreensaver(const char* aName, const char* aPath, @@ -330,8 +330,9 @@ void WakeLockTopic::DBusUninhibitScreensaver(const char* aName, const char* aMethod) { WAKE_LOCK_LOG( "WakeLockTopic::DBusUninhibitScreensaver() mWaitingForDBusInhibit %d " - "mWaitingForDBusUninhibit %d request id %u", - mWaitingForDBusInhibit, mWaitingForDBusUninhibit, mInhibitRequestID); + "mWaitingForDBusUninhibit %d request id %d", + mWaitingForDBusInhibit, mWaitingForDBusUninhibit, + mInhibitRequestID ? *mInhibitRequestID : -1); if (mWaitingForDBusUninhibit) { WAKE_LOCK_LOG(" already waiting to uninihibit, return"); @@ -344,7 +345,7 @@ void WakeLockTopic::DBusUninhibitScreensaver(const char* aName, mWaitingForDBusInhibit = false; } - if (!mInhibitRequestID) { + if (!mInhibitRequestID.isSome()) { WAKE_LOCK_LOG(" missing inihibit token, quit."); // missing uninhibit token, just quit. return; @@ -352,7 +353,7 @@ void WakeLockTopic::DBusUninhibitScreensaver(const char* aName, mWaitingForDBusUninhibit = true; RefPtr variant = - dont_AddRef(g_variant_ref_sink(g_variant_new("(u)", mInhibitRequestID))); + dont_AddRef(g_variant_ref_sink(g_variant_new("(u)", *mInhibitRequestID))); nsCOMPtr target = GetCurrentSerialEventTarget(); widget::CreateDBusProxyForBus( G_BUS_TYPE_SESSION,