Title: [198157] trunk/Source/WebCore
Revision
198157
Author
[email protected]
Date
2016-03-14 14:32:38 -0700 (Mon, 14 Mar 2016)

Log Message

Fix crash when reloading a page using requestAnimationFrame on iOS
https://bugs.webkit.org/show_bug.cgi?id=155465
rdar://problem/25100202

Reviewed by Tim Horton.

On iOS, it's possible for all clients for a DisplayRefreshMonitor
to be unregistered, but still get a subsequent displayDidRefresh() for that monitor.
In this case, we would remove(notFound) which release-asserts.

Fix by just checking for notFound.

Unable to test because requestAnimationFrame doesn't work in the simulator.

* platform/graphics/DisplayRefreshMonitorManager.cpp:
(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (198156 => 198157)


--- trunk/Source/WebCore/ChangeLog	2016-03-14 21:16:43 UTC (rev 198156)
+++ trunk/Source/WebCore/ChangeLog	2016-03-14 21:32:38 UTC (rev 198157)
@@ -1,3 +1,22 @@
+2016-03-14  Simon Fraser  <[email protected]>
+
+        Fix crash when reloading a page using requestAnimationFrame on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=155465
+        rdar://problem/25100202
+
+        Reviewed by Tim Horton.
+
+        On iOS, it's possible for all clients for a DisplayRefreshMonitor
+        to be unregistered, but still get a subsequent displayDidRefresh() for that monitor.
+        In this case, we would remove(notFound) which release-asserts.
+        
+        Fix by just checking for notFound.
+        
+        Unable to test because requestAnimationFrame doesn't work in the simulator.
+
+        * platform/graphics/DisplayRefreshMonitorManager.cpp:
+        (WebCore::DisplayRefreshMonitorManager::displayDidRefresh):
+
 2016-03-14  Per Arne Vollan  <[email protected]>
 
         [WinCairo][MediaFoundation] Implement float versions of MediaPlayer methods.

Modified: trunk/Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp (198156 => 198157)


--- trunk/Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp	2016-03-14 21:16:43 UTC (rev 198156)
+++ trunk/Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp	2016-03-14 21:32:38 UTC (rev 198157)
@@ -109,8 +109,8 @@
         return;
 
     size_t monitorIndex = m_monitors.find(&monitor);
-    ASSERT(monitorIndex != notFound);
-    m_monitors.remove(monitorIndex);
+    if (monitorIndex != notFound)
+        m_monitors.remove(monitorIndex);
 }
 
 void DisplayRefreshMonitorManager::windowScreenDidChange(PlatformDisplayID displayID, DisplayRefreshMonitorClient& client)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to