Chromium Code Reviews| Index: Source/core/rendering/RenderLayer.cpp |
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp |
| index 7a423b6b173fc47089985bc8964073decbcd831f..c41252a781c3aefe4b1101d1b0e3833248bed07e 100644 |
| --- a/Source/core/rendering/RenderLayer.cpp |
| +++ b/Source/core/rendering/RenderLayer.cpp |
| @@ -125,6 +125,7 @@ RenderLayer::RenderLayer(RenderLayerModelObject* renderer, LayerType type) |
| , m_containsDirtyOverlayScrollbars(false) |
| , m_canSkipRepaintRectsUpdateOnScroll(renderer->isTableCell()) |
| , m_hasFilterInfo(false) |
| + , m_needsToRecomputeBounds(true) |
| , m_renderer(renderer) |
| , m_parent(0) |
| , m_previous(0) |
| @@ -1177,6 +1178,17 @@ RenderLayer* RenderLayer::enclosingFilterLayer(IncludeSelfOrNot includeSelf) con |
| return 0; |
| } |
| +void RenderLayer::clearNeedsToRecomputeBounds() |
| +{ |
| + m_needsToRecomputeBounds = false; |
| +} |
| + |
| +void RenderLayer::setAbsoluteBoundingBoxForOverlap(const IntRect& rect) |
|
esprehn
2014/03/21 23:28:01
Not having parity with the getter is a little weir
ojan
2014/03/22 00:25:43
Whoops. Missed this in a last minute rename.
|
| +{ |
| + m_cachedAbsoluteBoundingBox = rect; |
| + clearNeedsToRecomputeBounds(); |
| +} |
| + |
| void RenderLayer::setCompositingReasons(CompositingReasons reasons) |
| { |
| if (m_compositingProperties.compositingReasons == reasons) |
| @@ -3368,11 +3380,6 @@ LayoutRect RenderLayer::boundingBox(const RenderLayer* ancestorLayer, CalculateL |
| return result; |
| } |
| -IntRect RenderLayer::absoluteBoundingBox() const |
| -{ |
| - return pixelSnappedIntRect(boundingBox(root())); |
| -} |
| - |
| LayoutRect RenderLayer::calculateLayerBounds(const RenderLayer* ancestorLayer, const LayoutPoint* offsetFromRoot, CalculateLayerBoundsFlags flags) const |
| { |
| if (!isSelfPaintingLayer()) |
| @@ -3900,8 +3907,13 @@ void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle |
| // https://code.google.com/p/chromium/issues/detail?id=343756 |
| DisableCompositingQueryAsserts disabler; |
| + // FIXME: We could avoid doing this ancestor walk by keeping a childNeedsToRecomputeBounds bit |
| + // and using that along with needsToRecomputeBounds to set this bit in a later layer tree walk |
| + // e.g. during assignLayersToBackings or computeCompositingRequirements. |
| if (RenderLayer* compositingLayer = enclosingCompositingLayer()) |
| compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate(); |
| + // FIXME: We only need to set this if something changed that can change our absolute bounding rect. |
| + m_needsToRecomputeBounds = true; |
| const RenderStyle* newStyle = renderer()->style(); |