| Index: Source/core/rendering/RenderLayerRepainter.cpp
|
| diff --git a/Source/core/rendering/RenderLayerRepainter.cpp b/Source/core/rendering/RenderLayerRepainter.cpp
|
| index eb65cb6db4750e68ca047ed71d729f1db3b805c7..0118cc0e28f3f566733edb5dc07fde0c3ba948ef 100644
|
| --- a/Source/core/rendering/RenderLayerRepainter.cpp
|
| +++ b/Source/core/rendering/RenderLayerRepainter.cpp
|
| @@ -155,16 +155,22 @@ LayoutRect RenderLayerRepainter::repaintRectIncludingNonCompositingDescendants()
|
|
|
| void RenderLayerRepainter::setBackingNeedsRepaint()
|
| {
|
| - ASSERT(m_renderer->hasCompositedLayerMapping());
|
| - m_renderer->compositedLayerMapping()->setContentsNeedDisplay();
|
| + ASSERT(m_renderer->compositingState() != NotComposited);
|
| +
|
| + if (m_renderer->compositingState() == PaintsIntoGroupedBacking) {
|
| + // FIXME: should probably setNeedsDisplayInRect for this layer's bounds only.
|
| + m_renderer->groupedMapping()->squashingLayer()->setNeedsDisplay();
|
| + } else {
|
| + m_renderer->compositedLayerMapping()->setContentsNeedDisplay();
|
| + }
|
| }
|
|
|
| void RenderLayerRepainter::setBackingNeedsRepaintInRect(const LayoutRect& r)
|
| {
|
| // https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here,
|
| // so assert but check that the layer is composited.
|
| - ASSERT(m_renderer->hasCompositedLayerMapping());
|
| - if (!m_renderer->hasCompositedLayerMapping()) {
|
| + ASSERT(m_renderer->compositingState() != NotComposited);
|
| + if (m_renderer->compositingState() == NotComposited) {
|
| // If we're trying to repaint the placeholder document layer, propagate the
|
| // repaint to the native view system.
|
| LayoutRect absRect(r);
|
| @@ -176,7 +182,13 @@ void RenderLayerRepainter::setBackingNeedsRepaintInRect(const LayoutRect& r)
|
| if (view)
|
| view->repaintViewRectangle(absRect);
|
| } else {
|
| - m_renderer->compositedLayerMapping()->setContentsNeedDisplayInRect(pixelSnappedIntRect(r));
|
| + if (m_renderer->compositingState() == PaintsIntoGroupedBacking) {
|
| + IntRect offsetRect = pixelSnappedIntRect(r);
|
| + offsetRect.move(-m_renderer->layer()->offsetFromSquashingLayerOrigin());
|
| + m_renderer->groupedMapping()->squashingLayer()->setNeedsDisplayInRect(offsetRect);
|
| + } else {
|
| + m_renderer->compositedLayerMapping()->setContentsNeedDisplayInRect(pixelSnappedIntRect(r));
|
| + }
|
| }
|
| }
|
|
|
|
|