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

Unified Diff: Source/core/rendering/RenderLayerRepainter.cpp

Issue 301843002: Store repaint rects in the coordinate space of their backing GraphicsLayer. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix comment. Created 6 years, 7 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: Source/core/rendering/RenderLayerRepainter.cpp
diff --git a/Source/core/rendering/RenderLayerRepainter.cpp b/Source/core/rendering/RenderLayerRepainter.cpp
index 9bd861e957872ccbd4f5b474121e1d90ed16d095..5f49e563350920a0d0b73ff364d386aeb45aa2ce 100644
--- a/Source/core/rendering/RenderLayerRepainter.cpp
+++ b/Source/core/rendering/RenderLayerRepainter.cpp
@@ -206,38 +206,12 @@ void RenderLayerRepainter::setBackingNeedsRepaintInRect(const LayoutRect& r)
view->repaintViewRectangle(absRect);
return;
}
- if (m_renderer.compositingState() == PaintsIntoGroupedBacking) {
- LayoutRect updatedRect(r);
-
- ASSERT(m_renderer.layer());
- ASSERT(m_renderer.layer()->enclosingTransformedAncestor());
- ASSERT(m_renderer.layer()->enclosingTransformedAncestor()->renderer());
-
- // FIXME: this defensive code should not have to exist. None of these pointers should ever be 0. See crbug.com/370410.
- RenderLayerModelObject* transformedAncestor = 0;
- if (RenderLayer* ancestor = m_renderer.layer()->enclosingTransformedAncestor())
- transformedAncestor = ancestor->renderer();
- if (!transformedAncestor)
- return;
-
- // If the transformedAncestor is actually the RenderView, we might get
- // confused and think that we can use LayoutState. Ideally, we'd made
- // LayoutState work for all composited layers as well, but until then
- // we need to disable LayoutState for squashed layers.
- LayoutStateDisabler layoutStateDisabler(*transformedAncestor);
-
- // This code adjusts the repaint rectangle to be in the space of the transformed ancestor of the grouped (i.e. squashed)
- // layer. This is because all layers that squash together need to repaint w.r.t. a single container that is
- // an ancestor of all of them, in order to properly take into account any local transforms etc.
- // FIXME: remove this special-case code that works around the repainting code structure.
- m_renderer.computeRectForRepaint(transformedAncestor, updatedRect);
- updatedRect.moveBy(-m_renderer.layer()->groupedMapping()->squashingOffsetFromTransformedAncestor());
-
- IntRect repaintRect = pixelSnappedIntRect(updatedRect);
+ IntRect repaintRect = pixelSnappedIntRect(r);
+ // FIXME: generalize accessors to backing GraphicsLayers so that this code is squashing-agnostic.
+ if (m_renderer.groupedMapping()) {
if (GraphicsLayer* squashingLayer = m_renderer.groupedMapping()->squashingLayer())
squashingLayer->setNeedsDisplayInRect(repaintRect);
} else {
- IntRect repaintRect = pixelSnappedIntRect(r);
m_renderer.compositedLayerMapping()->setContentsNeedDisplayInRect(repaintRect);
}
}
@@ -246,7 +220,6 @@ void RenderLayerRepainter::setFilterBackendNeedsRepaintingInRect(const LayoutRec
{
if (rect.isEmpty())
return;
-
LayoutRect rectForRepaint = rect;
m_renderer.style()->filterOutsets().expandRect(rectForRepaint);

Powered by Google App Engine
This is Rietveld 408576698