| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 void finishAccumulatingSquashingLayers(size_t nextSquashedLayerIndex); | 147 void finishAccumulatingSquashingLayers(size_t nextSquashedLayerIndex); |
| 148 void updateRenderingContext(); | 148 void updateRenderingContext(); |
| 149 void updateShouldFlattenTransform(); | 149 void updateShouldFlattenTransform(); |
| 150 | 150 |
| 151 // GraphicsLayerClient interface | 151 // GraphicsLayerClient interface |
| 152 void notifyAnimationStarted(const GraphicsLayer*, double monotonicTime, int
group) override; | 152 void notifyAnimationStarted(const GraphicsLayer*, double monotonicTime, int
group) override; |
| 153 void notifyFirstPaint() override; | 153 void notifyFirstPaint() override; |
| 154 void notifyFirstTextPaint() override; | 154 void notifyFirstTextPaint() override; |
| 155 void notifyFirstImagePaint() override; | 155 void notifyFirstImagePaint() override; |
| 156 | 156 |
| 157 void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPain
tingPhase, const IntRect* clip) const override; | 157 IntRect computeInterestRect(const GraphicsLayer*, const IntRect& previousInt
erestRect) const override; |
| 158 bool needsRepaint() const override; |
| 159 void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPain
tingPhase, const IntRect& interestRect) const override; |
| 160 |
| 158 bool isTrackingPaintInvalidations() const override; | 161 bool isTrackingPaintInvalidations() const override; |
| 159 | 162 |
| 160 #if ENABLE(ASSERT) | 163 #if ENABLE(ASSERT) |
| 161 void verifyNotPainting() override; | 164 void verifyNotPainting() override; |
| 162 #endif | 165 #endif |
| 163 | 166 |
| 164 LayoutRect contentsBox() const; | 167 LayoutRect contentsBox() const; |
| 165 | 168 |
| 166 GraphicsLayer* layerForHorizontalScrollbar() const { return m_layerForHorizo
ntalScrollbar.get(); } | 169 GraphicsLayer* layerForHorizontalScrollbar() const { return m_layerForHorizo
ntalScrollbar.get(); } |
| 167 GraphicsLayer* layerForVerticalScrollbar() const { return m_layerForVertical
Scrollbar.get(); } | 170 GraphicsLayer* layerForVerticalScrollbar() const { return m_layerForVertical
Scrollbar.get(); } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 187 bool needsGraphicsLayerUpdate() { return m_pendingUpdateScope > GraphicsLaye
rUpdateNone; } | 190 bool needsGraphicsLayerUpdate() { return m_pendingUpdateScope > GraphicsLaye
rUpdateNone; } |
| 188 void setNeedsGraphicsLayerUpdate(GraphicsLayerUpdateScope scope) { m_pending
UpdateScope = std::max(static_cast<GraphicsLayerUpdateScope>(m_pendingUpdateScop
e), scope); } | 191 void setNeedsGraphicsLayerUpdate(GraphicsLayerUpdateScope scope) { m_pending
UpdateScope = std::max(static_cast<GraphicsLayerUpdateScope>(m_pendingUpdateScop
e), scope); } |
| 189 void clearNeedsGraphicsLayerUpdate() { m_pendingUpdateScope = GraphicsLayerU
pdateNone; } | 192 void clearNeedsGraphicsLayerUpdate() { m_pendingUpdateScope = GraphicsLayerU
pdateNone; } |
| 190 | 193 |
| 191 GraphicsLayerUpdater::UpdateType updateTypeForChildren(GraphicsLayerUpdater:
:UpdateType) const; | 194 GraphicsLayerUpdater::UpdateType updateTypeForChildren(GraphicsLayerUpdater:
:UpdateType) const; |
| 192 | 195 |
| 193 #if ENABLE(ASSERT) | 196 #if ENABLE(ASSERT) |
| 194 void assertNeedsToUpdateGraphicsLayerBitsCleared() { ASSERT(m_pendingUpdate
Scope == GraphicsLayerUpdateNone); } | 197 void assertNeedsToUpdateGraphicsLayerBitsCleared() { ASSERT(m_pendingUpdate
Scope == GraphicsLayerUpdateNone); } |
| 195 #endif | 198 #endif |
| 196 | 199 |
| 197 String debugName(const GraphicsLayer*) override; | 200 String debugName(const GraphicsLayer*) const override; |
| 198 | 201 |
| 199 LayoutSize contentOffsetInCompositingLayer() const; | 202 LayoutSize contentOffsetInCompositingLayer() const; |
| 200 | 203 |
| 201 LayoutPoint squashingOffsetFromTransformedAncestor() | 204 LayoutPoint squashingOffsetFromTransformedAncestor() |
| 202 { | 205 { |
| 203 return m_squashingLayerOffsetFromTransformedAncestor; | 206 return m_squashingLayerOffsetFromTransformedAncestor; |
| 204 } | 207 } |
| 205 | 208 |
| 206 // If there is a squashed layer painting into this CLM that is an ancestor o
f the given LayoutObject, return it. Otherwise return nullptr. | 209 // If there is a squashed layer painting into this CLM that is an ancestor o
f the given LayoutObject, return it. Otherwise return nullptr. |
| 207 const GraphicsLayerPaintInfo* containingSquashedLayer(const LayoutObject*, u
nsigned maxSquashedLayerIndex); | 210 const GraphicsLayerPaintInfo* containingSquashedLayer(const LayoutObject*, u
nsigned maxSquashedLayerIndex); |
| 208 | 211 |
| 209 void updateScrollingBlockSelection(); | 212 void updateScrollingBlockSelection(); |
| 210 | 213 |
| 211 DisplayItemClient displayItemClient() const { return toDisplayItemClient(thi
s); } | 214 DisplayItemClient displayItemClient() const { return toDisplayItemClient(thi
s); } |
| 212 String debugName() const { return "CompositedLayerMapping for " + owningLaye
r().debugName(); } | 215 String debugName() const { return "CompositedLayerMapping for " + owningLaye
r().debugName(); } |
| 213 | 216 |
| 214 private: | 217 private: |
| 215 static IntRect computeInterestRect(const GraphicsLayer*, LayoutObject* ownin
gLayoutObject); | 218 static IntRect recomputeInterestRect(const GraphicsLayer*, LayoutObject* own
ingLayoutObject); |
| 216 static bool interestRectChangedEnoughToRepaint(const IntRect& previousIntere
stRect, const IntRect& newInterestRect, const IntSize& layerSize); | 219 static bool interestRectChangedEnoughToRepaint(const IntRect& previousIntere
stRect, const IntRect& newInterestRect, const IntSize& layerSize); |
| 217 | 220 |
| 218 static const GraphicsLayerPaintInfo* containingSquashedLayer(const LayoutObj
ect*, const Vector<GraphicsLayerPaintInfo>& layers, unsigned maxSquashedLayerIn
dex); | 221 static const GraphicsLayerPaintInfo* containingSquashedLayer(const LayoutObj
ect*, const Vector<GraphicsLayerPaintInfo>& layers, unsigned maxSquashedLayerIn
dex); |
| 219 | 222 |
| 220 // Helper methods to updateGraphicsLayerGeometry: | 223 // Helper methods to updateGraphicsLayerGeometry: |
| 221 void computeGraphicsLayerParentLocation(const PaintLayer* compositingContain
er, const IntRect& ancestorCompositingBounds, IntPoint& graphicsLayerParentLocat
ion); | 224 void computeGraphicsLayerParentLocation(const PaintLayer* compositingContain
er, const IntRect& ancestorCompositingBounds, IntPoint& graphicsLayerParentLocat
ion); |
| 222 void updateSquashingLayerGeometry(const LayoutPoint& offsetFromCompositedAnc
estor, const IntPoint& graphicsLayerParentLocation, const PaintLayer& referenceL
ayer, Vector<GraphicsLayerPaintInfo>& layers, GraphicsLayer*, LayoutPoint* offse
tFromTransformedAncestor, Vector<PaintLayer*>& layersNeedingPaintInvalidation); | 225 void updateSquashingLayerGeometry(const LayoutPoint& offsetFromCompositedAnc
estor, const IntPoint& graphicsLayerParentLocation, const PaintLayer& referenceL
ayer, Vector<GraphicsLayerPaintInfo>& layers, GraphicsLayer*, LayoutPoint* offse
tFromTransformedAncestor, Vector<PaintLayer*>& layersNeedingPaintInvalidation); |
| 223 void updateMainGraphicsLayerGeometry(const IntRect& relativeCompositingBound
s, const IntRect& localCompositingBounds, const IntPoint& graphicsLayerParentLoc
ation); | 226 void updateMainGraphicsLayerGeometry(const IntRect& relativeCompositingBound
s, const IntRect& localCompositingBounds, const IntPoint& graphicsLayerParentLoc
ation); |
| 224 void updateAncestorClippingLayerGeometry(const PaintLayer* compositingContai
ner, const IntPoint& snappedOffsetFromCompositedAncestor, IntPoint& graphicsLaye
rParentLocation); | 227 void updateAncestorClippingLayerGeometry(const PaintLayer* compositingContai
ner, const IntPoint& snappedOffsetFromCompositedAncestor, IntPoint& graphicsLaye
rParentLocation); |
| 225 void updateOverflowControlsHostLayerGeometry(const PaintLayer* compositingSt
ackingContext, const PaintLayer* compositingContainer); | 228 void updateOverflowControlsHostLayerGeometry(const PaintLayer* compositingSt
ackingContext, const PaintLayer* compositingContainer); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 // Return true if |m_owningLayer|'s compositing ancestor is not a descendant
(inclusive) of the | 312 // Return true if |m_owningLayer|'s compositing ancestor is not a descendant
(inclusive) of the |
| 310 // clipping container for |m_owningLayer|. | 313 // clipping container for |m_owningLayer|. |
| 311 bool owningLayerClippedByLayerNotAboveCompositedAncestor(PaintLayer* scrollP
arent); | 314 bool owningLayerClippedByLayerNotAboveCompositedAncestor(PaintLayer* scrollP
arent); |
| 312 | 315 |
| 313 PaintLayer* scrollParent(); | 316 PaintLayer* scrollParent(); |
| 314 | 317 |
| 315 // Clear the groupedMapping entry on the layer at the given index, only if t
hat layer does | 318 // Clear the groupedMapping entry on the layer at the given index, only if t
hat layer does |
| 316 // not appear earlier in the set of layers for this object. | 319 // not appear earlier in the set of layers for this object. |
| 317 bool invalidateLayerIfNoPrecedingEntry(size_t); | 320 bool invalidateLayerIfNoPrecedingEntry(size_t); |
| 318 | 321 |
| 319 void paintContentsInternal(const GraphicsLayer*, GraphicsContext&, GraphicsL
ayerPaintingPhase, const IntRect& interestRect) const; | |
| 320 | |
| 321 PaintLayer& m_owningLayer; | 322 PaintLayer& m_owningLayer; |
| 322 | 323 |
| 323 // The hierarchy of layers that is maintained by the CompositedLayerMapping
looks like this: | 324 // The hierarchy of layers that is maintained by the CompositedLayerMapping
looks like this: |
| 324 // | 325 // |
| 325 // + m_ancestorClippingLayer [OPTIONAL] | 326 // + m_ancestorClippingLayer [OPTIONAL] |
| 326 // + m_graphicsLayer | 327 // + m_graphicsLayer |
| 327 // + m_childTransformLayer [OPTIONAL] | 328 // + m_childTransformLayer [OPTIONAL] |
| 328 // | + m_childContainmentLayer [OPTIONAL] <-OR-> m_scrollingLayer [OPTI
ONAL] | 329 // | + m_childContainmentLayer [OPTIONAL] <-OR-> m_scrollingLayer [OPTI
ONAL] |
| 329 // | + m_scrollingContentsL
ayer [Present iff m_scrollingLayer is present] | 330 // | + m_scrollingContentsL
ayer [Present iff m_scrollingLayer is present] |
| 330 // | + m_scrollingBlockSe
lectionLayer [Present iff m_scrollingLayer is present] | 331 // | + m_scrollingBlockSe
lectionLayer [Present iff m_scrollingLayer is present] |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 | 435 |
| 435 LayoutSize m_contentOffsetInCompositingLayer; | 436 LayoutSize m_contentOffsetInCompositingLayer; |
| 436 unsigned m_contentOffsetInCompositingLayerDirty : 1; | 437 unsigned m_contentOffsetInCompositingLayerDirty : 1; |
| 437 | 438 |
| 438 unsigned m_pendingUpdateScope : 2; | 439 unsigned m_pendingUpdateScope : 2; |
| 439 unsigned m_isMainFrameLayoutViewLayer : 1; | 440 unsigned m_isMainFrameLayoutViewLayer : 1; |
| 440 | 441 |
| 441 unsigned m_backgroundLayerPaintsFixedRootBackground : 1; | 442 unsigned m_backgroundLayerPaintsFixedRootBackground : 1; |
| 442 unsigned m_scrollingContentsAreEmpty : 1; | 443 unsigned m_scrollingContentsAreEmpty : 1; |
| 443 | 444 |
| 444 mutable IntRect m_previousPaintInterestRect; | |
| 445 | |
| 446 friend class CompositedLayerMappingTest; | 445 friend class CompositedLayerMappingTest; |
| 447 }; | 446 }; |
| 448 | 447 |
| 449 } // namespace blink | 448 } // namespace blink |
| 450 | 449 |
| 451 #endif // CompositedLayerMapping_h | 450 #endif // CompositedLayerMapping_h |
| OLD | NEW |