Index: Source/core/rendering/RenderLayerCompositor.h |
diff --git a/Source/core/rendering/RenderLayerCompositor.h b/Source/core/rendering/RenderLayerCompositor.h |
index a8b18b7d9e05a47c381617e9f356e0b0465418cc..24658c0230490a02ccfb467cbeca3b7d37e6539f 100644 |
--- a/Source/core/rendering/RenderLayerCompositor.h |
+++ b/Source/core/rendering/RenderLayerCompositor.h |
@@ -229,6 +229,25 @@ private: |
void addToOverlapMap(OverlapMap&, RenderLayer*, IntRect& layerBounds, bool& boundsComputed); |
void addToOverlapMapRecursive(OverlapMap&, RenderLayer*, RenderLayer* ancestorLayer = 0); |
+ struct SquashingState { |
+ SquashingState() |
+ : mostRecentMapping(0) |
+ , hasMostRecentMapping(false) |
+ , nextSquashedLayerIndex(0) { } |
+ |
+ void updateSquashingStateForNewMapping(CompositedLayerMappingPtr, bool hasNewCompositedLayerMapping, IntPoint newOffsetFromAbsolute); |
+ |
+ // The most recent composited backing that the layer should squash onto if needed. |
+ CompositedLayerMappingPtr mostRecentMapping; |
+ bool hasMostRecentMapping; |
+ |
+ // Offset in absolute coordinates of the compositedLayerMapping's owning layer. |
+ IntPoint offsetFromAbsolute; |
+ |
+ // Counter that tracks what index the next RenderLayer would be if it gets squashed to the current squashing layer. |
+ size_t nextSquashedLayerIndex; |
+ }; |
+ |
// Forces an update for all frames of frame tree recursively. Used only when the mainFrame compositor is ready to |
// finish all deferred work. |
static void finishCompositingUpdateForFrameTree(Frame*); |
@@ -238,7 +257,7 @@ private: |
// Defines which RenderLayers will paint into which composited backings, by allocating and destroying CompositedLayerMappings as needed. |
void assignLayersToBackings(RenderLayer*, bool& layersChanged); |
- void assignLayersToBackingsInternal(RenderLayer*, bool& layersChanged); |
+ void assignLayersToBackingsInternal(RenderLayer*, SquashingState&, bool& layersChanged); |
// Recurses down the tree, parenting descendant compositing layers and collecting an array of child layers for the current compositing layer. |
void rebuildCompositingLayerTree(RenderLayer*, Vector<GraphicsLayer*>& childGraphicsLayersOfEnclosingLayer, int depth); |