Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(277)

Unified Diff: Source/WebCore/rendering/RenderLayer.cpp

Issue 13859006: Rework composited scrolling updates. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@early-out2
Patch Set: . Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/WebCore/rendering/RenderLayer.h ('k') | Source/WebCore/rendering/RenderLayerCompositor.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/WebCore/rendering/RenderLayer.cpp
diff --git a/Source/WebCore/rendering/RenderLayer.cpp b/Source/WebCore/rendering/RenderLayer.cpp
index c4787b98c1b85f14ef32d7096cf2f4c121f39b59..8cbfb94447a93139debde788f6c752944355f998 100644
--- a/Source/WebCore/rendering/RenderLayer.cpp
+++ b/Source/WebCore/rendering/RenderLayer.cpp
@@ -146,9 +146,10 @@ RenderLayer::RenderLayer(RenderLayerModelObject* renderer)
, m_hasSelfPaintingLayerDescendant(false)
, m_hasSelfPaintingLayerDescendantDirty(false)
, m_hasOutOfFlowPositionedDescendant(false)
- , m_hasOutOfFlowPositionedDescendantDirty(true)
+ , m_hasOutOfFlowPositionedDescendantDirty(false)
, m_needsCompositedScrolling(false)
- , m_descendantsAreContiguousInStackingOrder(false)
+ , m_descendantsAreContiguousInStackingOrder(true)
+ , m_descendantsAreContiguousInStackingOrderDirty(false)
, m_isRootLayer(renderer->isRenderView())
, m_usedTransparency(false)
, m_paintingInsideReflection(false)
@@ -595,11 +596,10 @@ bool RenderLayer::acceleratedCompositingForOverflowScrollEnabled() const
// And we would conclude that C could be promoted.
void RenderLayer::updateDescendantsAreContiguousInStackingOrder()
{
- if (!isStackingContext() || !acceleratedCompositingForOverflowScrollEnabled())
+ if (!m_descendantsAreContiguousInStackingOrderDirty || !isStackingContext() || !acceleratedCompositingForOverflowScrollEnabled()) {
+ m_descendantsAreContiguousInStackingOrderDirty = false;
return;
-
- ASSERT(!m_normalFlowListDirty);
- ASSERT(!m_zOrderListsDirty);
+ }
OwnPtr<Vector<RenderLayer*> > posZOrderList;
OwnPtr<Vector<RenderLayer*> > negZOrderList;
@@ -635,10 +635,14 @@ void RenderLayer::updateDescendantsAreContiguousInStackingOrder()
int count = 0;
bool firstIteration = true;
updateDescendantsAreContiguousInStackingOrderRecursive(lookup, minIndex, maxIndex, count, firstIteration);
+
+ m_descendantsAreContiguousInStackingOrderDirty = false;
}
void RenderLayer::updateDescendantsAreContiguousInStackingOrderRecursive(const HashMap<const RenderLayer*, int>& lookup, int& minIndex, int& maxIndex, int& count, bool firstIteration)
{
+ m_descendantsAreContiguousInStackingOrderDirty = false;
+
if (isStackingContext() && !firstIteration) {
if (lookup.contains(this)) {
minIndex = std::min(minIndex, lookup.get(this));
@@ -660,13 +664,8 @@ void RenderLayer::updateDescendantsAreContiguousInStackingOrderRecursive(const H
}
}
- if (!isStackingContext()) {
- bool newValue = maxIndex - minIndex == count;
- bool didUpdate = newValue != m_descendantsAreContiguousInStackingOrder;
- m_descendantsAreContiguousInStackingOrder = newValue;
- if (didUpdate)
- updateNeedsCompositedScrolling();
- }
+ if (!isStackingContext())
+ m_descendantsAreContiguousInStackingOrder = maxIndex - minIndex == count;
}
void RenderLayer::computeRepaintRects(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap* geometryMap)
@@ -971,11 +970,12 @@ bool RenderLayer::canBeStackingContainer() const
if (isStackingContext() || !stackingContainer())
return true;
+ ASSERT(!m_descendantsAreContiguousInStackingOrderDirty);
return m_descendantsAreContiguousInStackingOrder;
}
void RenderLayer::setHasVisibleContent()
-{
+{
if (m_hasVisibleContent && !m_visibleContentStatusDirty) {
ASSERT(!parent() || parent()->hasVisibleDescendant());
return;
@@ -988,7 +988,7 @@ void RenderLayer::setHasVisibleContent()
// We don't collect invisible layers in z-order lists if we are not in compositing mode.
// As we became visible, we need to dirty our stacking containers ancestors to be properly
// collected. FIXME: When compositing, we could skip this dirtying phase.
- for (RenderLayer* sc = stackingContainer(); sc; sc = sc->stackingContainer()) {
+ for (RenderLayer* sc = parent(); sc; sc = sc->parent()) {
sc->dirtyZOrderLists();
if (sc->hasVisibleContent())
break;
@@ -1051,7 +1051,7 @@ void RenderLayer::updateDescendantDependentFlags(HashSet<const RenderObject*>* o
bool hasVisibleDescendant = child->m_hasVisibleContent || child->m_hasVisibleDescendant;
bool hasSelfPaintingLayerDescendant = child->isSelfPaintingLayer() || child->hasSelfPaintingLayerDescendant();
- bool hasOutOfFlowPositionedDescendant = !childOutOfFlowDescendantContainingBlocks.isEmpty();
+ bool hasOutOfFlowPositionedDescendant = !childOutOfFlowDescendantContainingBlocks.isEmpty() || child->hasOutOfFlowPositionedDescendant();
m_hasVisibleDescendant |= hasVisibleDescendant;
m_hasSelfPaintingLayerDescendant |= hasSelfPaintingLayerDescendant;
@@ -1066,10 +1066,6 @@ void RenderLayer::updateDescendantDependentFlags(HashSet<const RenderObject*>* o
m_visibleDescendantStatusDirty = false;
m_hasSelfPaintingLayerDescendantDirty = false;
-
- if (m_hasOutOfFlowPositionedDescendantDirty)
- updateNeedsCompositedScrolling();
-
m_hasOutOfFlowPositionedDescendantDirty = false;
}
@@ -1277,13 +1273,13 @@ FloatPoint RenderLayer::perspectiveOrigin() const
floatValueForLength(style->perspectiveOriginY(), borderBox.height()));
}
-RenderLayer* RenderLayer::stackingContainer() const
+RenderLayer* RenderLayer::stackingContainer(bool allowDirty) const
{
RenderLayer* layer = parent();
- while (layer && !layer->isStackingContainer())
+ while (layer && !layer->isStackingContainer(allowDirty))
layer = layer->parent();
- ASSERT(!layer || layer->isStackingContainer());
+ ASSERT(!layer || layer->isStackingContainer(allowDirty));
return layer;
}
@@ -1331,9 +1327,9 @@ RenderLayer* RenderLayer::enclosingTransformedAncestor() const
return curr;
}
-static inline const RenderLayer* compositingContainer(const RenderLayer* layer)
+static inline const RenderLayer* compositingContainer(const RenderLayer* layer, bool allowDirty = false)
{
- return layer->isNormalFlowOnly() ? layer->parent() : layer->stackingContainer();
+ return layer->isNormalFlowOnly() ? layer->parent() : layer->stackingContainer(allowDirty);
}
inline bool RenderLayer::shouldRepaintAfterLayout() const
@@ -1365,7 +1361,7 @@ RenderLayer* RenderLayer::enclosingCompositingLayerForRepaint(bool includeSelf)
if (includeSelf && isComposited() && !backing()->paintsIntoCompositedAncestor())
return const_cast<RenderLayer*>(this);
- for (const RenderLayer* curr = compositingContainer(this); curr; curr = compositingContainer(curr)) {
+ for (const RenderLayer* curr = compositingContainer(this, true); curr; curr = compositingContainer(curr, true)) {
if (curr->isComposited() && !curr->backing()->paintsIntoCompositedAncestor())
return const_cast<RenderLayer*>(curr);
}
@@ -1677,6 +1673,7 @@ void RenderLayer::addChild(RenderLayer* child, RenderLayer* beforeChild)
// case where we're building up generated content layers. This is ok, since the lists will start
// off dirty in that case anyway.
child->dirtyStackingContainerZOrderLists();
+ child->m_descendantsAreContiguousInStackingOrderDirty = true;
}
child->updateDescendantDependentFlags();
@@ -1710,11 +1707,12 @@ RenderLayer* RenderLayer::removeChild(RenderLayer* oldChild)
if (oldChild->isNormalFlowOnly())
dirtyNormalFlowList();
- if (!oldChild->isNormalFlowOnly() || oldChild->firstChild()) {
+ if (!oldChild->isNormalFlowOnly() || oldChild->firstChild()) {
// Dirty the z-order list in which we are contained. When called via the
// reattachment process in removeOnlyThisLayer, the layer may already be disconnected
// from the main layer tree, so we need to null-check the |stackingContainer| value.
oldChild->dirtyStackingContainerZOrderLists();
+ m_descendantsAreContiguousInStackingOrderDirty = true;
}
if ((oldChild->renderer() && oldChild->renderer()->isOutOfFlowPositioned()) || oldChild->hasOutOfFlowPositionedDescendant())
@@ -1723,7 +1721,7 @@ RenderLayer* RenderLayer::removeChild(RenderLayer* oldChild)
oldChild->setPreviousSibling(0);
oldChild->setNextSibling(0);
oldChild->setParent(0);
-
+
oldChild->updateDescendantDependentFlags();
if (oldChild->m_hasVisibleContent || oldChild->m_hasVisibleDescendant)
dirtyAncestorChainVisibleDescendantStatus();
@@ -1937,48 +1935,67 @@ bool RenderLayer::usesCompositedScrolling() const
return isComposited() && backing()->scrollingLayer();
}
-bool RenderLayer::needsCompositedScrolling() const
+bool RenderLayer::needsCompositedScrolling(bool allowDirty) const
{
+ ASSERT(allowDirty || !m_descendantsAreContiguousInStackingOrderDirty);
+ ASSERT(allowDirty || !m_hasOutOfFlowPositionedDescendantDirty);
return m_needsCompositedScrolling;
}
void RenderLayer::updateNeedsCompositedScrolling()
{
- bool oldNeedsCompositedScrolling = m_needsCompositedScrolling;
+ bool needsCompositedScrolling = false;
FrameView* frameView = renderer()->view()->frameView();
- if (!frameView || !frameView->containsScrollableArea(this))
- m_needsCompositedScrolling = false;
- else {
+ if (frameView && frameView->containsScrollableArea(this)) {
bool forceUseCompositedScrolling = acceleratedCompositingForOverflowScrollEnabled()
&& canBeStackingContainer()
&& !hasOutOfFlowPositionedDescendant();
#if ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
- m_needsCompositedScrolling = forceUseCompositedScrolling || renderer()->style()->useTouchOverflowScrolling();
+ needsCompositedScrolling = forceUseCompositedScrolling || renderer()->style()->useTouchOverflowScrolling();
#else
- m_needsCompositedScrolling = forceUseCompositedScrolling;
+ needsCompositedScrolling = forceUseCompositedScrolling;
#endif
// We gather a boolean value for use with Google UMA histograms to
// quantify the actual effects of a set of patches attempting to
// relax composited scrolling requirements, thereby increasing the
// number of composited overflow divs.
if (acceleratedCompositingForOverflowScrollEnabled())
- HistogramSupport::histogramEnumeration("Renderer.NeedsCompositedScrolling", m_needsCompositedScrolling, 2);
+ HistogramSupport::histogramEnumeration("Renderer.NeedsCompositedScrolling", needsCompositedScrolling, 2);
}
- if (oldNeedsCompositedScrolling != m_needsCompositedScrolling) {
- updateSelfPaintingLayer();
- if (isStackingContainer())
- dirtyZOrderLists();
- else
- clearZOrderLists();
+ if (m_needsCompositedScrolling == needsCompositedScrolling)
+ return;
- dirtyStackingContainerZOrderLists();
+ m_needsCompositedScrolling = needsCompositedScrolling;
- compositor()->setShouldReevaluateCompositingAfterLayout();
- compositor()->setCompositingLayersNeedRebuild();
+ // Update values that depend on m_needsCompositedScrolling.
+ updateIsNormalFlowOnly();
+ updateSelfPaintingLayer();
+
+ // Changes to needsCompositedScrolling will affect which layers appear
+ // in which z-order lists (some layers that had previously been in our
+ // stacking context's lists may now be in ours), but it will never
+ // affect contiguity (this is the point of these opt in checks). So
+ // we will dirty the z-order lists but leave the contiguity dirty bit
+ // unaffected. RenderLayerCompositor guarantees these values are clean
+ // before calling updateNeedsCompositedScrolling, so we just need to
+ // reset the dirty bits to clean.
+ if (isStackingContainer())
+ dirtyZOrderLists();
+ else
+ clearZOrderLists();
+ dirtyStackingContainerZOrderLists();
+
+ for (RenderLayer* layer = this; layer; layer = layer->parent()) {
+ layer->m_descendantsAreContiguousInStackingOrderDirty = false;
+ if (layer->isStackingContext())
+ break;
}
+
+ compositor()->setShouldReevaluateCompositingAfterLayout();
+ compositor()->setCompositingLayersNeedRebuild();
}
static inline int adjustedScrollDelta(int beginningDelta) {
@@ -2273,7 +2290,7 @@ void RenderLayer::updateCompositingLayersAfterScroll()
// repositioning, so update compositing layers from there.
if (RenderLayer* compositingAncestor = stackingContainer()->enclosingCompositingLayer()) {
if (compositor()->compositingConsultsOverlap()) {
- if (usesCompositedScrolling() && !hasOutOfFlowPositionedDescendant())
+ if (usesCompositedScrolling())
compositor()->updateCompositingLayers(CompositingUpdateOnCompositedScroll, compositingAncestor);
else
compositor()->updateCompositingLayers(CompositingUpdateOnScroll, compositingAncestor);
@@ -3108,10 +3125,6 @@ void RenderLayer::updateScrollInfoAfterLayout()
if (originalScrollOffset != scrollOffset())
scrollToOffsetWithoutAnimation(IntPoint(scrollOffset()));
-
- // Composited scrolling may need to be enabled or disabled if the amount of overflow changed.
- if (renderer()->view() && compositor()->updateLayerCompositingState(this))
- compositor()->setCompositingLayersNeedRebuild();
}
bool RenderLayer::overflowControlsIntersectRect(const IntRect& localRect) const
@@ -5496,7 +5509,6 @@ static inline bool compareZIndex(RenderLayer* first, RenderLayer* second)
void RenderLayer::dirtyZOrderLists()
{
ASSERT(m_layerListMutationAllowed);
- ASSERT(isStackingContainer());
if (m_posZOrderList)
m_posZOrderList->clear();
@@ -5504,6 +5516,8 @@ void RenderLayer::dirtyZOrderLists()
m_negZOrderList->clear();
m_zOrderListsDirty = true;
+ m_descendantsAreContiguousInStackingOrderDirty = true;
+
if (!renderer()->documentBeingDestroyed()) {
compositor()->setCompositingLayersNeedRebuild();
if (acceleratedCompositingForOverflowScrollEnabled())
@@ -5513,9 +5527,23 @@ void RenderLayer::dirtyZOrderLists()
void RenderLayer::dirtyStackingContainerZOrderLists()
{
- RenderLayer* sc = stackingContainer();
- if (sc)
- sc->dirtyZOrderLists();
+ // When this function is called, we need to dirty both our enclosing
+ // stacking container and our stacking context's z-order lists since a
+ // z-order change in the container may affect our decision to opt into
+ // composited scrolling and could therefore affect either layer's z-order
+ // lists. Unfortunately, we are not able to ask if a layer is a stacking
+ // container once z-order lists start getting dirtied (since this will
+ // dirty descendants-are-contiguous-in-stacking-order and could affect our
+ // composited scrolling status and consequently our stacking-containerness)
+ // That said, we do know that if we march up our ancestors, once we reach
+ // a stacking context, we must have hit a stacking container (since
+ // stacking contexts are always stacking containers), so it's safe to stop
+ // there.
+ for (RenderLayer* layer = parent(); layer; layer = layer->parent()) {
+ layer->dirtyZOrderLists();
+ if (layer->isStackingContext())
+ break;
+ }
}
void RenderLayer::dirtyNormalFlowList()
@@ -5526,6 +5554,7 @@ void RenderLayer::dirtyNormalFlowList()
m_normalFlowList->clear();
m_normalFlowListDirty = true;
+ m_descendantsAreContiguousInStackingOrderDirty = true;
if (!renderer()->documentBeingDestroyed()) {
compositor()->setCompositingLayersNeedRebuild();
if (acceleratedCompositingForOverflowScrollEnabled())
@@ -5628,7 +5657,7 @@ void RenderLayer::collectLayers(bool includeHiddenLayers, CollectLayersBehavior
void RenderLayer::updateLayerListsIfNeeded()
{
- bool shouldUpdateDescendantsAreContiguousInStackingOrder = isStackingContext() && (m_zOrderListsDirty || m_normalFlowListDirty);
+ bool shouldUpdateDescendantsAreContiguousInStackingOrder = acceleratedCompositingForOverflowScrollEnabled() && isStackingContext() && (m_zOrderListsDirty || m_normalFlowListDirty) && m_descendantsAreContiguousInStackingOrderDirty;
updateZOrderLists();
updateNormalFlowList();
@@ -5724,6 +5753,19 @@ bool RenderLayer::shouldBeNormalFlowOnly() const
;
}
+void RenderLayer::updateIsNormalFlowOnly()
+{
+ bool isNormalFlowOnly = shouldBeNormalFlowOnly();
+ if (isNormalFlowOnly == m_isNormalFlowOnly)
+ return;
+
+ m_isNormalFlowOnly = isNormalFlowOnly;
+ RenderLayer* p = parent();
+ if (p)
+ p->dirtyNormalFlowList();
+ dirtyStackingContainerZOrderLists();
+}
+
bool RenderLayer::shouldBeSelfPaintingLayer() const
{
return !isNormalFlowOnly()
@@ -5808,27 +5850,21 @@ bool RenderLayer::isVisuallyNonEmpty() const
void RenderLayer::updateStackingContextsAfterStyleChange(const RenderStyle* oldStyle)
{
- if (!oldStyle)
- return;
+ bool wasStackingContext = oldStyle ? isStackingContext(oldStyle) : false;
+ EVisibility oldVisibility = oldStyle ? oldStyle->visibility() : VISIBLE;
+ int oldZIndex = oldStyle ? oldStyle->zIndex() : 0;
- bool wasStackingContext = isStackingContext(oldStyle);
+ // FIXME: RenderLayer already handles visibility changes through our visiblity dirty bits. This logic could
+ // likely be folded along with the rest.
bool isStackingContext = this->isStackingContext();
- if (isStackingContext != wasStackingContext) {
- dirtyStackingContainerZOrderLists();
- if (isStackingContext)
- dirtyZOrderLists();
- else
- clearZOrderLists();
+ if (isStackingContext == wasStackingContext && oldVisibility == renderer()->style()->visibility() && oldZIndex == renderer()->style()->zIndex())
return;
- }
- // FIXME: RenderLayer already handles visibility changes through our visiblity dirty bits. This logic could
- // likely be folded along with the rest.
- if (oldStyle->zIndex() != renderer()->style()->zIndex() || oldStyle->visibility() != renderer()->style()->visibility()) {
- dirtyStackingContainerZOrderLists();
- if (isStackingContext)
- dirtyZOrderLists();
- }
+ dirtyStackingContainerZOrderLists();
+ if (isStackingContainer())
+ dirtyZOrderLists();
+ else
+ clearZOrderLists();
}
static bool overflowRequiresScrollbar(EOverflow overflow)
@@ -5885,7 +5921,6 @@ void RenderLayer::setAncestorChainHasOutOfFlowPositionedDescendant(RenderObject*
layer->m_hasOutOfFlowPositionedDescendantDirty = false;
layer->m_hasOutOfFlowPositionedDescendant = true;
- layer->updateNeedsCompositedScrolling();
if (layer->renderer() && layer->renderer() == containingBlock)
break;
@@ -5894,7 +5929,9 @@ void RenderLayer::setAncestorChainHasOutOfFlowPositionedDescendant(RenderObject*
void RenderLayer::dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus()
{
- m_hasOutOfFlowPositionedDescendantDirty = true;
+ if (m_hasOutOfFlowPositionedDescendant)
+ m_hasOutOfFlowPositionedDescendantDirty = true;
+
if (parent())
parent()->dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus();
}
@@ -5902,10 +5939,12 @@ void RenderLayer::dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus()
void RenderLayer::updateOutOfFlowPositioned(const RenderStyle* oldStyle)
{
bool wasOutOfFlowPositioned = oldStyle && (oldStyle->position() == AbsolutePosition || oldStyle->position() == FixedPosition);
- if (parent() && ((renderer() && renderer()->isOutOfFlowPositioned()) != wasOutOfFlowPositioned)) {
- parent()->dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus();
- if (!renderer()->documentBeingDestroyed() && acceleratedCompositingForOverflowScrollEnabled())
- compositor()->setShouldReevaluateCompositingAfterLayout();
+ bool isOutOfFlowPositioned = renderer()->isOutOfFlowPositioned();
+ if (parent() && isOutOfFlowPositioned != wasOutOfFlowPositioned) {
+ if (isOutOfFlowPositioned)
+ parent()->setAncestorChainHasOutOfFlowPositionedDescendant(renderer()->containingBlock());
+ else
+ parent()->dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus();
}
}
@@ -5989,14 +6028,8 @@ void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle*
void RenderLayer::styleChanged(StyleDifference, const RenderStyle* oldStyle)
{
- bool isNormalFlowOnly = shouldBeNormalFlowOnly();
- if (isNormalFlowOnly != m_isNormalFlowOnly) {
- m_isNormalFlowOnly = isNormalFlowOnly;
- RenderLayer* p = parent();
- if (p)
- p->dirtyNormalFlowList();
- dirtyStackingContainerZOrderLists();
- }
+ // Skip this for now. We'll do the update after layout.
+ // updateIsNormalFlowOnly();
if (renderer()->style()->overflowX() == OMARQUEE && renderer()->style()->marqueeBehavior() != MNONE && renderer()->isBox()) {
if (!m_marquee)
@@ -6010,9 +6043,12 @@ void RenderLayer::styleChanged(StyleDifference, const RenderStyle* oldStyle)
updateScrollbarsAfterStyleChange(oldStyle);
updateStackingContextsAfterStyleChange(oldStyle);
+
// Overlay scrollbars can make this layer self-painting so we need
// to recompute the bit once scrollbars have been updated.
- updateSelfPaintingLayer();
+
+ // Skip this for now. We'll do the update after layout.
+ // updateSelfPaintingLayer();
updateOutOfFlowPositioned(oldStyle);
if (!hasReflection() && m_reflection)
@@ -6047,16 +6083,19 @@ void RenderLayer::styleChanged(StyleDifference, const RenderStyle* oldStyle)
updateFilters(oldStyle, renderer()->style());
#endif
- updateNeedsCompositedScrolling();
-
- const RenderStyle* newStyle = renderer()->style();
- if (compositor()->updateLayerCompositingState(this)
- || needsCompositingLayersRebuiltForClip(oldStyle, newStyle)
- || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle)
- || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintWithFilters))
- compositor()->setCompositingLayersNeedRebuild();
- else if (isComposited())
- backing()->updateGraphicsLayerGeometry();
+// FIXME(vollick) this requires updates that won't happen until after layout.
+// Will this just fall out of the updateCompositingLayers call that will be
+// coming anyway?
+//
+// const RenderStyle* newStyle = renderer()->style();
+// if (compositor()->updateLayerCompositingState(this)
+// || needsCompositingLayersRebuiltForClip(oldStyle, newStyle)
+// || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle)
+// || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintWithFilters))
+// compositor()->setCompositingLayersNeedRebuild();
+// else if (isComposited())
+// backing()->updateGraphicsLayerGeometry();
+//
}
void RenderLayer::updateScrollableAreaSet(bool hasOverflow)
@@ -6073,8 +6112,10 @@ void RenderLayer::updateScrollableAreaSet(bool hasOverflow)
if (HTMLFrameOwnerElement* owner = frame->ownerElement())
isVisibleToHitTest &= owner->renderer() && owner->renderer()->visibleToHitTesting();
- if (hasOverflow && isVisibleToHitTest ? frameView->addScrollableArea(this) : frameView->removeScrollableArea(this))
- updateNeedsCompositedScrolling();
+ if (hasOverflow && isVisibleToHitTest)
+ frameView->addScrollableArea(this);
+ else
+ frameView->removeScrollableArea(this);
}
void RenderLayer::updateScrollCornerStyle()
« no previous file with comments | « Source/WebCore/rendering/RenderLayer.h ('k') | Source/WebCore/rendering/RenderLayerCompositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698