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

Unified Diff: third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp

Issue 1636563003: Put rare PaintLayer fields into PaintLayerRareData (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
Index: third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp
diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp
index 0df4cb7aabb8047047a3bfbd2eb54706e09d2341..5fe741f854763cfcd01ec40b6d637b6c10f2e528 100644
--- a/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp
@@ -110,6 +110,7 @@ void CompositingInputsUpdater::updateRecursive(PaintLayer* layer, UpdateType upd
if (updateType == ForceUpdate) {
PaintLayer::AncestorDependentCompositingInputs properties;
+ PaintLayer::RareAncestorDependentCompositingInputs rareProperties;
if (!layer->isRootLayer()) {
properties.clippedAbsoluteBoundingBox = enclosingIntRect(m_geometryMap.absoluteRect(FloatRect(layer->boundingBoxForCompositingOverlapTest())));
@@ -123,11 +124,11 @@ void CompositingInputsUpdater::updateRecursive(PaintLayer* layer, UpdateType upd
properties.clippedAbsoluteBoundingBox.intersect(clipRect);
const PaintLayer* parent = layer->parent();
- properties.opacityAncestor = parent->isTransparent() ? parent : parent->opacityAncestor();
- properties.transformAncestor = parent->hasTransformRelatedProperty() ? parent : parent->transformAncestor();
- properties.filterAncestor = parent->hasFilter() ? parent : parent->filterAncestor();
+ rareProperties.opacityAncestor = parent->isTransparent() ? parent : parent->opacityAncestor();
+ rareProperties.transformAncestor = parent->hasTransformRelatedProperty() ? parent : parent->transformAncestor();
+ rareProperties.filterAncestor = parent->hasFilter() ? parent : parent->filterAncestor();
bool layerIsFixedPosition = layer->layoutObject()->style()->position() == FixedPosition;
- properties.nearestFixedPositionLayer = layerIsFixedPosition ? layer : parent->nearestFixedPositionLayer();
+ rareProperties.nearestFixedPositionLayer = layerIsFixedPosition ? layer : parent->nearestFixedPositionLayer();
if (info.hasAncestorWithClipRelatedProperty) {
const PaintLayer* parentLayerOnClippingContainerChain = findParentLayerOnClippingContainerChain(layer);
@@ -139,25 +140,24 @@ void CompositingInputsUpdater::updateRecursive(PaintLayer* layer, UpdateType upd
const LayoutObject* containingBlock = layer->layoutObject()->containingBlock();
const PaintLayer* parentLayerOnContainingBlockChain = findParentLayerOnContainingBlockChain(containingBlock);
- properties.ancestorScrollingLayer = parentLayerOnContainingBlockChain->ancestorScrollingLayer();
+ rareProperties.ancestorScrollingLayer = parentLayerOnContainingBlockChain->ancestorScrollingLayer();
if (parentLayerOnContainingBlockChain->scrollsOverflow())
- properties.ancestorScrollingLayer = parentLayerOnContainingBlockChain;
+ rareProperties.ancestorScrollingLayer = parentLayerOnContainingBlockChain;
if (layer->layoutObject()->isOutOfFlowPositioned() && !layer->subtreeIsInvisible()) {
const PaintLayer* clippingLayer = properties.clippingContainer ? properties.clippingContainer->enclosingLayer() : layer->compositor()->rootLayer();
if (hasClippedStackingAncestor(layer, clippingLayer))
- properties.clipParent = clippingLayer;
+ rareProperties.clipParent = clippingLayer;
}
if (layer->stackingNode()->isTreatedAsOrStackingContext()
- && properties.ancestorScrollingLayer
- && !info.ancestorStackingContext->layoutObject()->isDescendantOf(properties.ancestorScrollingLayer->layoutObject()))
- properties.scrollParent = properties.ancestorScrollingLayer;
+ && rareProperties.ancestorScrollingLayer
+ && !info.ancestorStackingContext->layoutObject()->isDescendantOf(rareProperties.ancestorScrollingLayer->layoutObject()))
+ rareProperties.scrollParent = rareProperties.ancestorScrollingLayer;
}
}
- properties.hasAncestorWithClipPath = info.hasAncestorWithClipPath;
- layer->updateAncestorDependentCompositingInputs(properties);
+ layer->updateAncestorDependentCompositingInputs(properties, rareProperties, info.hasAncestorWithClipPath);
}
if (layer->stackingNode()->isStackingContext())
@@ -172,15 +172,16 @@ void CompositingInputsUpdater::updateRecursive(PaintLayer* layer, UpdateType upd
if (layer->layoutObject()->hasClipPath())
info.hasAncestorWithClipPath = true;
- PaintLayer::DescendantDependentCompositingInputs descendantProperties;
+ bool hasDescendantWithClipPath = false;
+ bool hasNonIsolatedDescendantWithBlendMode = false;
for (PaintLayer* child = layer->firstChild(); child; child = child->nextSibling()) {
updateRecursive(child, updateType, info);
- descendantProperties.hasDescendantWithClipPath |= child->hasDescendantWithClipPath() || child->layoutObject()->hasClipPath();
- descendantProperties.hasNonIsolatedDescendantWithBlendMode |= (!child->stackingNode()->isStackingContext() && child->hasNonIsolatedDescendantWithBlendMode()) || child->layoutObject()->style()->hasBlendMode();
+ hasDescendantWithClipPath |= child->hasDescendantWithClipPath() || child->layoutObject()->hasClipPath();
+ hasNonIsolatedDescendantWithBlendMode |= (!child->stackingNode()->isStackingContext() && child->hasNonIsolatedDescendantWithBlendMode()) || child->layoutObject()->style()->hasBlendMode();
}
- layer->updateDescendantDependentCompositingInputs(descendantProperties);
+ layer->updateDescendantDependentCompositingInputs(hasDescendantWithClipPath, hasNonIsolatedDescendantWithBlendMode);
layer->didUpdateCompositingInputs();
m_geometryMap.popMappingsToAncestor(layer->parent());

Powered by Google App Engine
This is Rietveld 408576698