Title: [285358] trunk/Source/WebCore
Revision
285358
Author
[email protected]
Date
2021-11-05 16:55:38 -0700 (Fri, 05 Nov 2021)

Log Message

[GLIB] Be more careful about calling LowPowerModeNotifier's callback
https://bugs.webkit.org/show_bug.cgi?id=232767

Reviewed by Michael Catanzaro.

This callback is expected to only be called when the value changes
otherwise it will hit asserts elsewhere such as in NetworkCache.

* platform/LowPowerModeNotifier.h:
* platform/glib/LowPowerModeNotifierGLib.cpp:
(WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
(WebCore::LowPowerModeNotifier::isLowPowerModeEnabled const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (285357 => 285358)


--- trunk/Source/WebCore/ChangeLog	2021-11-05 23:06:50 UTC (rev 285357)
+++ trunk/Source/WebCore/ChangeLog	2021-11-05 23:55:38 UTC (rev 285358)
@@ -1,3 +1,18 @@
+2021-11-05  Patrick Griffis  <[email protected]>
+
+        [GLIB] Be more careful about calling LowPowerModeNotifier's callback
+        https://bugs.webkit.org/show_bug.cgi?id=232767
+
+        Reviewed by Michael Catanzaro.
+
+        This callback is expected to only be called when the value changes
+        otherwise it will hit asserts elsewhere such as in NetworkCache.
+
+        * platform/LowPowerModeNotifier.h:
+        * platform/glib/LowPowerModeNotifierGLib.cpp:
+        (WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
+        (WebCore::LowPowerModeNotifier::isLowPowerModeEnabled const):
+
 2021-11-05  Nikolaos Mouchtaris  <[email protected]>
 
         Make scroll bar mode an enum class

Modified: trunk/Source/WebCore/platform/LowPowerModeNotifier.h (285357 => 285358)


--- trunk/Source/WebCore/platform/LowPowerModeNotifier.h	2021-11-05 23:06:50 UTC (rev 285357)
+++ trunk/Source/WebCore/platform/LowPowerModeNotifier.h	2021-11-05 23:55:38 UTC (rev 285358)
@@ -60,6 +60,7 @@
     LowPowerModeChangeCallback m_callback;
     GRefPtr<GPowerProfileMonitor> m_powerProfileMonitor;
 #endif
+    bool m_lowPowerModeEnabled { false };
 #endif
 };
 

Modified: trunk/Source/WebCore/platform/glib/LowPowerModeNotifierGLib.cpp (285357 => 285358)


--- trunk/Source/WebCore/platform/glib/LowPowerModeNotifierGLib.cpp	2021-11-05 23:06:50 UTC (rev 285357)
+++ trunk/Source/WebCore/platform/glib/LowPowerModeNotifierGLib.cpp	2021-11-05 23:55:38 UTC (rev 285358)
@@ -31,11 +31,16 @@
 #if GLIB_CHECK_VERSION(2, 69, 1)
     : m_callback(WTFMove(callback))
     , m_powerProfileMonitor(adoptGRef(g_power_profile_monitor_dup_default()))
+    , m_lowPowerModeEnabled(g_power_profile_monitor_get_power_saver_enabled(m_powerProfileMonitor.get()))
 #endif
 {
 #if GLIB_CHECK_VERSION(2, 69, 1)
-    g_signal_connect_swapped(m_powerProfileMonitor.get(), "notify::power-saver-enabled", G_CALLBACK(+[] (LowPowerModeNotifier* self, GParamSpec*, GPowerProfileMonitor*) {
-        self->m_callback(self->isLowPowerModeEnabled());
+    g_signal_connect_swapped(m_powerProfileMonitor.get(), "notify::power-saver-enabled", G_CALLBACK(+[] (LowPowerModeNotifier* self, GParamSpec*, GPowerProfileMonitor* monitor) {
+        bool powerSaverEnabled = g_power_profile_monitor_get_power_saver_enabled(monitor);
+        if (self->m_lowPowerModeEnabled != powerSaverEnabled) {
+            self->m_lowPowerModeEnabled = powerSaverEnabled;
+            self->m_callback(self->m_lowPowerModeEnabled);
+        }
     }), this);
 #endif
 }
@@ -49,11 +54,7 @@
 
 bool LowPowerModeNotifier::isLowPowerModeEnabled() const
 {
-#if GLIB_CHECK_VERSION(2, 69, 1)
-    return g_power_profile_monitor_get_power_saver_enabled(m_powerProfileMonitor.get());
-#else
-    return false;
-#endif
+    return m_lowPowerModeEnabled;
 }
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to