Changeset 247459 in webkit
- Timestamp:
- Jul 15, 2019 4:06:58 PM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r247457 r247459 1 2019-07-15 Chris Dumez <cdumez@apple.com> 2 3 Crash under DisplayRefreshMonitorManager::displayWasUpdated() 4 https://bugs.webkit.org/show_bug.cgi?id=199808 5 <rdar://problem/53070144> 6 7 Reviewed by Geoffrey Garen. 8 9 Copy m_monitors before iterating over it because the calling displayLinkFired() on the 10 monitor may end up calling DisplayRefreshMonitorManager::displayDidRefresh() synchronously, 11 which removes the monitor from m_monitors. 12 13 * platform/graphics/DisplayRefreshMonitorManager.cpp: 14 (WebCore::DisplayRefreshMonitorManager::displayWasUpdated): 15 1 16 2019-07-15 Yusuke Suzuki <ysuzuki@apple.com> 2 17 -
trunk/Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp
r247273 r247459 129 129 void DisplayRefreshMonitorManager::displayWasUpdated(PlatformDisplayID displayID) 130 130 { 131 for (const auto& monitorWrapper : m_monitors) { 132 auto& monitor = monitorWrapper.monitor; 131 Vector<RefPtr<DisplayRefreshMonitor>> monitors = WTF::map(m_monitors, [](auto& monitorWrapper) { 132 return monitorWrapper.monitor; 133 }); 134 for (auto& monitor : monitors) { 133 135 if (displayID == monitor->displayID() && monitor->hasRequestedRefreshCallback()) 134 136 monitor->displayLinkFired();
Note: See TracChangeset
for help on using the changeset viewer.