Skip to content
  • timothy_horton@apple.com's avatar
    TileController can fail to receive exposedRect from the drawing area if set at the wrong time · 50af46e0
    timothy_horton@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=126536
    
    Reviewed by Simon Fraser.
    
    * Configurations/WebKit2.xcconfig:
    * UIProcess/API/mac/WKView.mm:
    (-[WKView _updateViewExposedRect]):
    * UIProcess/DrawingAreaProxy.cpp:
    (WebKit::DrawingAreaProxy::DrawingAreaProxy):
    (WebKit::DrawingAreaProxy::setExposedRect):
    (WebKit::DrawingAreaProxy::exposedRectChangedTimerFired):
    * UIProcess/DrawingAreaProxy.h:
    (WebKit::DrawingAreaProxy::exposedRect):
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::WebPageProxy):
    (WebKit::WebPageProxy::close):
    * UIProcess/WebPageProxy.h:
    Move exposedRect stuff from WebPageProxy to DrawingAreaProxy.
    
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
    Push the exposedRect down into WebCore.
    
    * WebProcess/WebPage/DrawingArea.h:
    * WebProcess/WebPage/DrawingArea.messages.in:
    * WebProcess/WebPage/WebPage.cpp:
    * WebProcess/WebPage/WebPage.h:
    * WebProcess/WebPage/WebPage.messages.in:
    * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
    * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
    (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
    (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect):
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
    (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
    (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
    (WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect):
    (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
    (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer):
    (WebKit::TiledCoreAnimationDrawingArea::didCommitChangesForLayer):
    Get rid of "clipsToExposedRect", we just use infinite-ness of the rect
    to indicate that now.
    Don't scroll an infinite rect; it won't work.
    
    * WebCore.exp.in:
    Export some things.
    
    * page/FrameView.cpp:
    (WebCore::FrameView::FrameView):
    (WebCore::FrameView::setExposedRect):
    Store the exposed rect on FrameView. When it changes, if the main frame
    has a TiledBacking, inform it of the change.
    
    * page/FrameView.h:
    * platform/graphics/TiledBacking.h:
    * platform/graphics/ca/mac/TileController.h:
    * platform/graphics/ca/mac/TileController.mm:
    (WebCore::TileController::TileController):
    (WebCore::TileController::tilesWouldChangeForVisibleRect):
    (WebCore::TileController::computeTileCoverageRect):
    (WebCore::TileController::revalidateTiles):
    (WebCore::TileController::updateTileCoverageMap):
    Make use of the fact that we can test if a rect is infinite
    instead of having a separate boolean property for that.
    
    * rendering/RenderLayerBacking.cpp:
    (WebCore::RenderLayerBacking::RenderLayerBacking):
    (WebCore::computeTileCoverage):
    Push the FrameView's cached exposed rect down into the TiledBacking when it is created.
    We only support clipping for the main frame TileController for now.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@161530 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    50af46e0