Changeset 223710 in webkit


Ignore:
Timestamp:
Oct 19, 2017 1:51:02 PM (7 years ago)
Author:
timothy_horton@apple.com
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.

Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r223708 r223710  
     12017-10-19  Tim Horton  <timothy_horton@apple.com>
     2
     3        Display link bringup can block the main thread for ~150ms during WKWebView init
     4        https://bugs.webkit.org/show_bug.cgi?id=178524
     5
     6        Reviewed by Dean Jackson.
     7
     8        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
     9        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
     10        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
     11        (WebKit::RemoteLayerTreeDrawingAreaProxy::displayLinkHandler):
     12        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
     13        (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
     14        Lazily initialize the display link at first use.
     15
    1162017-10-19  Tim Horton  <timothy_horton@apple.com>
    217
  • trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h

    r221541 r223710  
    7373#endif
    7474
     75#if PLATFORM(IOS)
     76    WKOneShotDisplayLinkHandler *displayLinkHandler();
     77#endif
     78
    7579    float indicatorScale(WebCore::IntSize contentsSize) const;
    7680    void updateDebugIndicator() override;
  • trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm

    r221563 r223710  
    110110    : DrawingAreaProxy(DrawingAreaTypeRemoteLayerTree, webPageProxy)
    111111    , m_remoteLayerTreeHost(*this)
    112 #if PLATFORM(IOS)
    113     , m_displayLinkHandler(adoptNS([[WKOneShotDisplayLinkHandler alloc] initWithDrawingAreaProxy:this]))
    114 #endif
    115112{
    116113#if USE(IOSURFACE)
     
    135132#endif
    136133}
     134
     135#if PLATFORM(IOS)
     136WKOneShotDisplayLinkHandler *RemoteLayerTreeDrawingAreaProxy::displayLinkHandler()
     137{
     138    if (!m_displayLinkHandler)
     139        m_displayLinkHandler = adoptNS([[WKOneShotDisplayLinkHandler alloc] initWithDrawingAreaProxy:this]);
     140    return m_displayLinkHandler.get();
     141}
     142#endif
    137143
    138144void RemoteLayerTreeDrawingAreaProxy::sizeDidChange()
     
    234240    if (std::exchange(m_didUpdateMessageState, NeedsDidUpdate) == MissedCommit)
    235241        didRefreshDisplay();
    236     [m_displayLinkHandler schedule];
     242    [displayLinkHandler() schedule];
    237243#else
    238244    m_didUpdateMessageState = NeedsDidUpdate;
     
    407413        m_didUpdateMessageState = MissedCommit;
    408414#if PLATFORM(IOS)
    409         [m_displayLinkHandler pause];
     415        [displayLinkHandler() pause];
    410416#endif
    411417        return;
Note: See TracChangeset for help on using the changeset viewer.