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

Reply via email to