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

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

Issue 88863002: Land layer squashing behind a flag (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: removed bogus asserts Created 7 years 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
« no previous file with comments | « Source/core/rendering/RenderLayerModelObject.cpp ('k') | Source/core/rendering/RenderObject.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderLayerRepainter.cpp
diff --git a/Source/core/rendering/RenderLayerRepainter.cpp b/Source/core/rendering/RenderLayerRepainter.cpp
index e6aa19e2302892aad9e4e3a70000207a91cb47a8..77da5c125d93e885283f2522f6de1d150a2ae7d6 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,17 @@ void RenderLayerRepainter::setBackingNeedsRepaintInRect(const LayoutRect& r)
if (view)
view->repaintViewRectangle(absRect);
} else {
- m_renderer->compositedLayerMapping()->setContentsNeedDisplayInRect(pixelSnappedIntRect(r));
+ if (m_renderer->compositingState() == PaintsIntoGroupedBacking) {
+ // FIXME: LayoutRect rounding to IntRect is probably not a good idea.
+ IntRect offsetRect = pixelSnappedIntRect(r);
+ if (m_renderer->hasTransform())
+ offsetRect = m_renderer->layer()->transform()->mapRect(pixelSnappedIntRect(r));
+
+ offsetRect.move(-m_renderer->layer()->offsetFromSquashingLayerOrigin());
+ m_renderer->groupedMapping()->squashingLayer()->setNeedsDisplayInRect(offsetRect);
+ } else {
+ m_renderer->compositedLayerMapping()->setContentsNeedDisplayInRect(pixelSnappedIntRect(r));
+ }
}
}
« no previous file with comments | « Source/core/rendering/RenderLayerModelObject.cpp ('k') | Source/core/rendering/RenderObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698