Title: [223710] trunk/Source/WebKit
- Revision
- 223710
- Author
- [email protected]
- Date
- 2017-10-19 13:51:02 -0700 (Thu, 19 Oct 2017)
Log Message
Display link bringup can block the main thread for ~150ms during WKWebView init
https://bugs.webkit.org/show_bug.cgi?id=178524
Reviewed by Dean Jackson.
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::displayLinkHandler):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
Lazily initialize the display link at first use.
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (223709 => 223710)
--- trunk/Source/WebKit/ChangeLog 2017-10-19 20:45:54 UTC (rev 223709)
+++ trunk/Source/WebKit/ChangeLog 2017-10-19 20:51:02 UTC (rev 223710)
@@ -1,5 +1,20 @@
2017-10-19 Tim Horton <[email protected]>
+ Display link bringup can block the main thread for ~150ms during WKWebView init
+ https://bugs.webkit.org/show_bug.cgi?id=178524
+
+ Reviewed by Dean Jackson.
+
+ * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
+ * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
+ (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
+ (WebKit::RemoteLayerTreeDrawingAreaProxy::displayLinkHandler):
+ (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
+ (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
+ Lazily initialize the display link at first use.
+
+2017-10-19 Tim Horton <[email protected]>
+
Expand r209943 to suppress paste during provisional navigation as well
https://bugs.webkit.org/show_bug.cgi?id=178429
<rdar://problem/33952830>
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h (223709 => 223710)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h 2017-10-19 20:45:54 UTC (rev 223709)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h 2017-10-19 20:51:02 UTC (rev 223710)
@@ -72,6 +72,10 @@
void setViewExposedRect(std::optional<WebCore::FloatRect>) override;
#endif
+#if PLATFORM(IOS)
+ WKOneShotDisplayLinkHandler *displayLinkHandler();
+#endif
+
float indicatorScale(WebCore::IntSize contentsSize) const;
void updateDebugIndicator() override;
void updateDebugIndicator(WebCore::IntSize contentsSize, bool rootLayerChanged, float scale, const WebCore::IntPoint& scrollPosition);
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm (223709 => 223710)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm 2017-10-19 20:45:54 UTC (rev 223709)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm 2017-10-19 20:51:02 UTC (rev 223710)
@@ -109,9 +109,6 @@
RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy(WebPageProxy& webPageProxy)
: DrawingAreaProxy(DrawingAreaTypeRemoteLayerTree, webPageProxy)
, m_remoteLayerTreeHost(*this)
-#if PLATFORM(IOS)
- , m_displayLinkHandler(adoptNS([[WKOneShotDisplayLinkHandler alloc] initWithDrawingAreaProxy:this]))
-#endif
{
#if USE(IOSURFACE)
// We don't want to pool surfaces in the UI process.
@@ -135,6 +132,15 @@
#endif
}
+#if PLATFORM(IOS)
+WKOneShotDisplayLinkHandler *RemoteLayerTreeDrawingAreaProxy::displayLinkHandler()
+{
+ if (!m_displayLinkHandler)
+ m_displayLinkHandler = adoptNS([[WKOneShotDisplayLinkHandler alloc] initWithDrawingAreaProxy:this]);
+ return m_displayLinkHandler.get();
+}
+#endif
+
void RemoteLayerTreeDrawingAreaProxy::sizeDidChange()
{
if (!m_webPageProxy.isValid())
@@ -233,7 +239,7 @@
#if PLATFORM(IOS)
if (std::exchange(m_didUpdateMessageState, NeedsDidUpdate) == MissedCommit)
didRefreshDisplay();
- [m_displayLinkHandler schedule];
+ [displayLinkHandler() schedule];
#else
m_didUpdateMessageState = NeedsDidUpdate;
didRefreshDisplay();
@@ -406,7 +412,7 @@
if (m_didUpdateMessageState != NeedsDidUpdate) {
m_didUpdateMessageState = MissedCommit;
#if PLATFORM(IOS)
- [m_displayLinkHandler pause];
+ [displayLinkHandler() pause];
#endif
return;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes