Changeset 141789 in webkit
- Timestamp:
- Feb 4, 2013, 11:26:18 AM (13 years ago)
- Location:
- trunk/Source
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r141787 r141789 1 2013-02-04 Tim Horton <timothy_horton@apple.com> 2 3 Allow TiledCoreAnimationDrawingArea overlay layers to become tiled 4 https://bugs.webkit.org/show_bug.cgi?id=108729 5 <rdar://problem/13047546> 6 7 Reviewed by Anders Carlsson. 8 9 * WebCore.exp.in: 10 * platform/graphics/ca/GraphicsLayerCA.cpp: 11 (WebCore::GraphicsLayerCA::flushCompositingStateForThisLayerOnly): The "for this layer only" variant 12 of flushCompositingState wasn't informing its client that it committed changes for the layer. 13 (WebCore::GraphicsLayerCA::swapFromOrToTiledLayer): We now explicitly want to be able to have a 14 GraphicsLayerCA switch into or out of tiling while being unparented (we'll get a client callback and 15 swap out its parent ourselves). 16 1 17 2013-02-04 Julien Chaffraix <jchaffraix@webkit.org> 2 18 -
trunk/Source/WebCore/WebCore.exp.in
r141738 r141789 496 496 __ZN7WebCore16createFullMarkupEPKNS_5RangeE 497 497 __ZN7WebCore16deleteAllCookiesERKNS_21NetworkStorageSessionE 498 __ZN7WebCore16enclosingIntRectERK6CGRect 498 499 __ZN7WebCore16enclosingIntRectERKNS_9FloatRectE 499 500 __ZN7WebCore16isEndOfParagraphERKNS_15VisiblePositionENS_27EditingBoundaryCrossingRuleE … … 1960 1961 __ZN7WebCore16VisibleSelection27selectionFromContentsOfNodeEPNS_4NodeE 1961 1962 __ZN7WebCore16VisibleSelectionC1Ev 1962 __ZN7WebCore16enclosingIntRectERK6CGRect1963 1963 __ZN7WebCore16jsStringWithCacheSlowCaseEPN3JSC9ExecStateERN3WTF7HashMapIPNS3_10StringImplENS0_4WeakINS0_8JSStringEEENS3_10StringHashENS3_10HashTraitsIS6_EENSB_IS9_EEEES6_ 1964 1964 __ZN7WebCore16nextLinePositionERKNS_15VisiblePositionEiNS_12EditableTypeE -
trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
r141036 r141789 897 897 { 898 898 float pageScaleFactor; 899 bool hadChanges = m_uncommittedChanges; 900 899 901 FloatPoint offset = computePositionRelativeToBase(pageScaleFactor); 900 902 commitLayerChangesBeforeSublayers(pageScaleFactor, offset, m_visibleRect); 901 903 commitLayerChangesAfterSublayers(); 904 905 if (hadChanges && client()) 906 client()->didCommitChangesForLayer(this); 902 907 } 903 908 … … 2648 2653 #endif 2649 2654 2650 // FIXME: Skip this step if we don't have a superlayer. This is problably a benign2651 // case that happens while restructuring the layer tree .2652 ASSERT(oldLayer->superlayer());2655 // Skip this step if we don't have a superlayer. This is probably a benign 2656 // case that happens while restructuring the layer tree, and also occurs with 2657 // WebKit2 page overlays, which can become tiled but are out-of-tree. 2653 2658 if (oldLayer->superlayer()) 2654 2659 oldLayer->superlayer()->replaceSublayer(oldLayer.get(), m_layer.get()); -
trunk/Source/WebKit2/ChangeLog
r141781 r141789 1 2013-02-04 Tim Horton <timothy_horton@apple.com> 2 3 Allow TiledCoreAnimationDrawingArea overlay layers to become tiled 4 https://bugs.webkit.org/show_bug.cgi?id=108729 5 <rdar://problem/13047546> 6 7 Reviewed by Anders Carlsson. 8 9 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: 10 (TiledCoreAnimationDrawingArea): Add didCommitChangesForLayer and storage for the 11 current PlatformLayer corresponding to m_pageOverlayLayer. 12 * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: 13 (WebKit::TiledCoreAnimationDrawingArea::flushLayers): Update the TileCache's visible rect. 14 (WebKit::TiledCoreAnimationDrawingArea::setExposedRect): Forward exposed rect changes to the page overlay layer, if it's tiled. 15 (WebKit::TiledCoreAnimationDrawingArea::mainFrameScrollabilityChanged): Forward scrollability changes to the page overlay layer, if it's tiled. 16 (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer): Allow the page overlay layer to become tiled. Update its exposed rect and whether or not it respects the exposed rect if it's tiled upon creation. 17 (WebKit::TiledCoreAnimationDrawingArea::didCommitChangesForLayer): If a GraphicsLayer's platform layer changes (because it switched to or from a tiled layer), reparent it. If it's switching to a tiled layer, update the exposed rect and whether or not it should respect the exposed rect. 18 1 19 2013-02-04 Anders Carlsson <andersca@apple.com> 2 20 -
trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h
r140087 r141789 82 82 virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& clipRect) OVERRIDE; 83 83 virtual float deviceScaleFactor() const OVERRIDE; 84 virtual void didCommitChangesForLayer(const WebCore::GraphicsLayer*) const OVERRIDE; 84 85 85 86 // WebCore::LayerFlushSchedulerClient … … 114 115 115 116 OwnPtr<WebCore::GraphicsLayer> m_pageOverlayLayer; 117 mutable RetainPtr<CALayer> m_pageOverlayPlatformLayer; 116 118 117 119 bool m_isPaintingSuspended; -
trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
r140769 r141789 298 298 if (m_pageOverlayLayer) { 299 299 m_pageOverlayLayer->setNeedsDisplay(); 300 if (TiledBacking* overlayTiledBacking = m_pageOverlayLayer->tiledBacking()) 301 overlayTiledBacking->setVisibleRect(enclosingIntRect(m_rootLayer.get().frame)); 300 302 m_pageOverlayLayer->flushCompositingStateForThisLayerOnly(); 301 303 } … … 340 342 341 343 mainFrameTiledBacking()->setExposedRect(exposedRect); 344 345 if (m_pageOverlayLayer) { 346 if (TiledBacking* tiledBacking = m_pageOverlayLayer->tiledBacking()) 347 tiledBacking->setExposedRect(exposedRect); 348 } 342 349 } 343 350 … … 345 352 { 346 353 mainFrameTiledBacking()->setClipsToExposedRect(!isScrollable); 354 355 if (m_pageOverlayLayer) { 356 if (TiledBacking* tiledBacking = m_pageOverlayLayer->tiledBacking()) 357 tiledBacking->setClipsToExposedRect(!isScrollable); 358 } 347 359 } 348 360 … … 472 484 #endif 473 485 474 // We don't ever want the overlay layer to become tiled because that will look bad, and475 // we also never expect the underlying CALayer to change.476 static_cast<GraphicsLayerCA*>(m_pageOverlayLayer.get())->setAllowTiledLayer(false);477 486 m_pageOverlayLayer->setAcceleratesDrawing(true); 478 487 m_pageOverlayLayer->setDrawsContent(true); 479 488 m_pageOverlayLayer->setSize(m_webPage->size()); 480 489 490 m_pageOverlayPlatformLayer = m_pageOverlayLayer->platformLayer(); 491 492 if (TiledBacking* tiledBacking = m_pageOverlayLayer->tiledBacking()) { 493 tiledBacking->setExposedRect(m_exposedRect); 494 tiledBacking->setClipsToExposedRect(!m_webPage->mainFrameIsScrollable()); 495 } 496 481 497 [CATransaction begin]; 482 498 [CATransaction setDisableActions:YES]; … … 499 515 500 516 m_pageOverlayLayer = nullptr; 517 } 518 519 void TiledCoreAnimationDrawingArea::didCommitChangesForLayer(const GraphicsLayer* layer) const 520 { 521 if (layer != m_pageOverlayLayer.get()) 522 return; 523 524 if (m_pageOverlayPlatformLayer.get() == layer->platformLayer()) 525 return; 526 527 [CATransaction begin]; 528 [CATransaction setDisableActions:YES]; 529 530 if (m_pageOverlayPlatformLayer) 531 [m_pageOverlayPlatformLayer.get() removeFromSuperlayer]; 532 533 [m_rootLayer.get() addSublayer:m_pageOverlayLayer->platformLayer()]; 534 535 [CATransaction commit]; 536 537 if (TiledBacking* tiledBacking = m_pageOverlayLayer->tiledBacking()) { 538 tiledBacking->setExposedRect(m_exposedRect); 539 tiledBacking->setClipsToExposedRect(!m_webPage->mainFrameIsScrollable()); 540 } 541 542 m_pageOverlayPlatformLayer = m_pageOverlayLayer->platformLayer(); 501 543 } 502 544
Note:
See TracChangeset
for help on using the changeset viewer.