Changeset 232884 in webkit
- Timestamp:
- Jun 15, 2018 11:47:32 AM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r232881 r232884 1 2018-06-15 Per Arne Vollan <pvollan@apple.com> 2 3 DisplayRefreshMonitorMac should hold a weak pointer to WebPage. 4 https://bugs.webkit.org/show_bug.cgi?id=186683 5 6 Reviewed by Brent Fulgham. 7 8 Instead of DisplayRefreshMonitorMac having a RefPtr to WebPage, it should have a weak pointer. 9 Having a RefPtr could in theory create reference cycles. This potential problem has not been 10 observed in practice, but it is safer to use a weak pointer. 11 12 * WebProcess/WebPage/WebPage.h: 13 * WebProcess/WebPage/mac/DrawingAreaMac.cpp: 14 (WebKit::DisplayRefreshMonitorMac::DisplayRefreshMonitorMac): 15 (WebKit::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac): 16 (WebKit::DisplayRefreshMonitorMac::requestRefreshCallback): 17 1 18 2018-06-15 Carlos Alberto Lopez Perez <clopez@igalia.com> 2 19 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r232730 r232884 247 247 using WKEventModifiers = uint32_t; 248 248 249 class WebPage : public API::ObjectImpl<API::Object::Type::BundlePage>, public IPC::MessageReceiver, public IPC::MessageSender {249 class WebPage : public API::ObjectImpl<API::Object::Type::BundlePage>, public IPC::MessageReceiver, public IPC::MessageSender, public CanMakeWeakPtr<WebPage> { 250 250 public: 251 251 static Ref<WebPage> create(uint64_t pageID, WebPageCreationParameters&&); -
trunk/Source/WebKit/WebProcess/WebPage/mac/DrawingAreaMac.cpp
r232652 r232884 58 58 bool hasRequestedRefreshCallback() const override { return m_hasSentMessage; } 59 59 60 Ref<WebPage> m_webPage;60 WeakPtr<WebPage> m_webPage; 61 61 bool m_hasSentMessage { false }; 62 62 unsigned m_observerID; … … 70 70 DisplayRefreshMonitorMac::DisplayRefreshMonitorMac(PlatformDisplayID displayID, WebPage& webPage) 71 71 : DisplayRefreshMonitor(displayID) 72 , m_webPage( webPage)72 , m_webPage(makeWeakPtr(webPage)) 73 73 , m_observerID(++m_counterID) 74 74 { … … 77 77 DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac() 78 78 { 79 ASSERT(m_webPage); 80 if (!m_webPage) 81 return; 82 79 83 m_webPage->send(Messages::WebPageProxy::StopDisplayLink(m_observerID)); 80 84 } … … 82 86 bool DisplayRefreshMonitorMac::requestRefreshCallback() 83 87 { 88 ASSERT(m_webPage); 89 if (!m_webPage) 90 return false; 91 84 92 if (!isActive()) 85 93 return false;
Note: See TracChangeset
for help on using the changeset viewer.