| Index: Source/core/rendering/RenderLayer.h
|
| diff --git a/Source/core/rendering/RenderLayer.h b/Source/core/rendering/RenderLayer.h
|
| index 18e40590e594cca3686cdc7101d31c4686587d3d..64bdca6564619d8d1969188ecac24c142ff555ea 100644
|
| --- a/Source/core/rendering/RenderLayer.h
|
| +++ b/Source/core/rendering/RenderLayer.h
|
| @@ -549,6 +549,9 @@ public:
|
| // rendering of the page.
|
| // FIXME: We should ASSERT(!m_hasOutOfFlowPositionedDescendantDirty); here but we may hit the same bugs as visible content above.
|
| bool hasOutOfFlowPositionedDescendant() const { return m_hasOutOfFlowPositionedDescendant; }
|
| + // PATCH 2 -- the change to the OOFPD requires a tree walk. We need to split this into phases
|
| + // or else the perf hit will be too great.
|
| + void updateHasOutOfFlowPositionedDescendant(HashSet<const RenderObject*>* containingBlocks = 0);
|
|
|
| // Gets the nearest enclosing positioned ancestor layer (also includes
|
| // the <html> layer and the root layer).
|
| @@ -814,6 +817,14 @@ public:
|
| enum PaintOrderListType {BeforePromote, AfterPromote};
|
| void computePaintOrderList(PaintOrderListType type, Vector<RefPtr<Node> >&);
|
|
|
| + // PATCH 1
|
| + enum ForceNeedsCompositedScrollingMode {
|
| + DoNotForceCompositedScrolling = 0,
|
| + ForceCompositedScrollingOn,
|
| + ForceCompositedScrollingOff
|
| + };
|
| + void setForceNeedsCompositedScrolling(ForceNeedsCompositedScrollingMode mode);
|
| +
|
| private:
|
| enum CollectLayersBehavior { StopAtStackingContexts, StopAtStackingContainers };
|
|
|
| @@ -833,8 +844,9 @@ private:
|
| void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus();
|
|
|
| bool acceleratedCompositingForOverflowScrollEnabled() const;
|
| - void updateDescendantsAreContiguousInStackingOrder();
|
| - void updateDescendantsAreContiguousInStackingOrderRecursive(const HashMap<const RenderLayer*, int>&, int& minIndex, int& maxIndex, int& count, bool firstIteration);
|
| + // PATCH 3
|
| + void updateCanBeStackingContainer(RenderLayer*);
|
| + void updateCanBeStackingContainerRecursively(RenderLayer*);
|
| void collectBeforePromotionZOrderList(RenderLayer* ancestorStackingContext, OwnPtr<Vector<RenderLayer*> >& posZOrderListBeforePromote, OwnPtr<Vector<RenderLayer*> >& negZOrderListBeforePromote);
|
| void collectAfterPromotionZOrderList(RenderLayer* ancestorStackingContext, OwnPtr<Vector<RenderLayer*> >& posZOrderListAfterPromote, OwnPtr<Vector<RenderLayer*> >& negZOrderListAfterPromote);
|
|
|
| @@ -856,11 +868,12 @@ private:
|
| void updateScrollbarsAfterStyleChange(const RenderStyle* oldStyle);
|
| void updateScrollbarsAfterLayout();
|
|
|
| - void setAncestorChainHasOutOfFlowPositionedDescendant(RenderObject* containingBlock);
|
| - void dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus();
|
| + // PATCH 2
|
| void updateOutOfFlowPositioned(const RenderStyle* oldStyle);
|
|
|
| void updateNeedsCompositedScrolling();
|
| + // PATCH 1
|
| + void didUpdateNeedsCompositedScrolling();
|
|
|
| // Returns true if the position changed.
|
| bool updateLayerPosition();
|
| @@ -1025,7 +1038,8 @@ private:
|
| void dirtyAncestorChainVisibleDescendantStatus();
|
| void setAncestorChainHasVisibleDescendant();
|
|
|
| - void updateDescendantDependentFlags(HashSet<const RenderObject*>* outOfFlowDescendantContainingBlocks = 0);
|
| + // PATCH 2
|
| + void updateDescendantDependentFlags();
|
|
|
| // This flag is computed by RenderLayerCompositor, which knows more about 3d hierarchies than we do.
|
| void setHas3DTransformedDescendant(bool b) { m_has3DTransformedDescendant = b; }
|
| @@ -1128,15 +1142,18 @@ protected:
|
| // appears between our descendants in stacking order, then we may become a
|
| // stacking context.
|
| bool m_hasOutOfFlowPositionedDescendant : 1;
|
| - bool m_hasOutOfFlowPositionedDescendantDirty : 1;
|
| + // PATCH 2 (removal)
|
|
|
| + // PATCH 1
|
| + ForceNeedsCompositedScrollingMode m_forceNeedsCompositedScrolling;
|
| bool m_needsCompositedScrolling : 1;
|
|
|
| // If this is true, then no non-descendant appears between any of our
|
| // descendants in stacking order. This is one of the requirements of being
|
| // able to safely become a stacking context.
|
| - bool m_descendantsAreContiguousInStackingOrder : 1;
|
| - bool m_descendantsAreContiguousInStackingOrderDirty : 1;
|
| + // PATCH 3
|
| + bool m_canBePromotedToStackingContainer : 1;
|
| + bool m_canBePromotedToStackingContainerDirty : 1;
|
|
|
| const bool m_isRootLayer : 1;
|
|
|
|
|