Index: Source/core/rendering/RenderView.cpp |
diff --git a/Source/core/rendering/RenderView.cpp b/Source/core/rendering/RenderView.cpp |
index ef34168d5c4cd1d7ea98613e72378c50f26b5f1e..0c909cf8b937a27ee5603028337a1f0d45557cde 100644 |
--- a/Source/core/rendering/RenderView.cpp |
+++ b/Source/core/rendering/RenderView.cpp |
@@ -438,6 +438,19 @@ void RenderView::paintBoxDecorations(PaintInfo& paintInfo, const LayoutPoint&) |
} |
} |
+void RenderView::repaintTreeAfterLayout(const RenderLayerModelObject& repaintContainer) |
Julien - ping for review
2014/05/30 02:39:32
This code path seems very artificial to me as I wo
leviw_travelin_and_unemployed
2014/05/30 15:52:57
I'm not sure I understand what the "artificial" pa
dsinclair
2014/06/02 00:38:29
That code path is never hit in RAL. I don't necess
Julien - ping for review
2014/06/02 23:21:19
It's not hit by RAL because we made it so, not bec
|
+{ |
+ ASSERT(RuntimeEnabledFeatures::repaintAfterLayoutEnabled()); |
+ ASSERT(!needsLayout()); |
+ |
+ // We specifically need to repaint the viewRect since other renderers |
+ // short-circuit on full-repaint. |
+ if (doingFullRepaint() && !viewRect().isEmpty()) |
+ repaintViewRectangle(viewRect()); |
+ |
+ RenderBlock::repaintTreeAfterLayout(repaintContainer); |
+} |
+ |
void RenderView::repaintViewRectangle(const LayoutRect& ur) const |
{ |
ASSERT(!ur.isEmpty()); |
@@ -448,9 +461,12 @@ void RenderView::repaintViewRectangle(const LayoutRect& ur) const |
// We always just invalidate the root view, since we could be an iframe that is clipped out |
// or even invisible. |
Element* elt = document().ownerElement(); |
- if (!elt) |
- m_frameView->repaintContentRectangle(pixelSnappedIntRect(ur)); |
- else if (RenderBox* obj = elt->renderBox()) { |
+ if (!elt) { |
+ if (hasLayer() && layer()->compositingState() == PaintsIntoOwnBacking) |
+ layer()->repainter().setBackingNeedsRepaintInRect(ur); |
+ else |
+ m_frameView->repaintContentRectangle(pixelSnappedIntRect(ur)); |
+ } else if (RenderBox* obj = elt->renderBox()) { |
LayoutRect vr = viewRect(); |
LayoutRect r = intersection(ur, vr); |