| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index 17edf636a3a2c9e7116f6987e2195b220b1c5311..4be60e188bc922726168313bb1beea8690e78f78 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -166,6 +166,7 @@ RenderLayer::RenderLayer(RenderLayerModelObject* renderer)
|
| , m_scrollCorner(0)
|
| , m_resizer(0)
|
| , m_enclosingPaginationLayer(0)
|
| + , m_forceNeedsCompositedScrolling(DoNotForceCompositedScrolling)
|
| {
|
| m_isNormalFlowOnly = shouldBeNormalFlowOnly();
|
| m_isSelfPaintingLayer = shouldBeSelfPaintingLayer();
|
| @@ -466,9 +467,8 @@ void RenderLayer::dirtyAncestorChainHasSelfPaintingLayerDescendantStatus()
|
|
|
| bool RenderLayer::acceleratedCompositingForOverflowScrollEnabled() const
|
| {
|
| - return renderer()->frame()
|
| - && renderer()->frame()->page()
|
| - && renderer()->frame()->page()->settings()->acceleratedCompositingForOverflowScrollEnabled();
|
| + const Settings* settings = renderer()->document()->settings();
|
| + return settings && settings->acceleratedCompositingForOverflowScrollEnabled();
|
| }
|
|
|
| // If we are a stacking container, then this function will determine if our
|
| @@ -2046,6 +2046,16 @@ bool RenderLayer::usesCompositedScrolling() const
|
|
|
| bool RenderLayer::needsCompositedScrolling() const
|
| {
|
| + switch (m_forceNeedsCompositedScrolling) {
|
| + case DoNotForceCompositedScrolling:
|
| + return m_needsCompositedScrolling;
|
| + case CompositedScrollingAlwaysOn:
|
| + return true;
|
| + case CompositedScrollingAlwaysOff:
|
| + return false;
|
| + }
|
| +
|
| + ASSERT_NOT_REACHED();
|
| return m_needsCompositedScrolling;
|
| }
|
|
|
| @@ -2079,6 +2089,24 @@ void RenderLayer::updateNeedsCompositedScrolling()
|
|
|
| m_needsCompositedScrolling = needsCompositedScrolling;
|
|
|
| + // Note, the z-order lists may need to be rebuilt, but our code guarantees
|
| + // that we have not affected stacking, so we will not dirty
|
| + // m_canBePromotedToStackingContainer for either us or our stacking context
|
| + // or container.
|
| + didUpdateNeedsCompositedScrolling();
|
| +}
|
| +
|
| +void RenderLayer::setForceNeedsCompositedScrolling(RenderLayer::ForceNeedsCompositedScrollingMode mode)
|
| +{
|
| + if (m_forceNeedsCompositedScrolling == mode)
|
| + return;
|
| +
|
| + m_forceNeedsCompositedScrolling = mode;
|
| + didUpdateNeedsCompositedScrolling();
|
| +}
|
| +
|
| +void RenderLayer::didUpdateNeedsCompositedScrolling()
|
| +{
|
| updateIsNormalFlowOnly();
|
| updateSelfPaintingLayer();
|
|
|
|
|