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

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

Issue 160903002: Move RenderLayer repainting to repaint-after-layout framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: Rebase to master Created 6 years, 9 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 141d303d802851ee0aca4d1b0bb7a6d7cd5cb6cc..c0030d9df2902cc6ba23e9d0a453089cd9d60b9c 100644
--- a/Source/core/rendering/RenderLayerRepainter.cpp
+++ b/Source/core/rendering/RenderLayerRepainter.cpp
@@ -45,6 +45,7 @@
#include "core/rendering/RenderLayerRepainter.h"
#include "core/rendering/FilterEffectRenderer.h"
+#include "core/rendering/LayoutRectRecorder.h"
#include "core/rendering/RenderLayer.h"
#include "core/rendering/RenderView.h"
#include "core/rendering/compositing/CompositedLayerMapping.h"
@@ -59,6 +60,9 @@ RenderLayerRepainter::RenderLayerRepainter(RenderLayerModelObject* renderer)
void RenderLayerRepainter::repaintAfterLayout(RenderGeometryMap* geometryMap, bool shouldCheckForRepaint)
{
+ if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled())
+ return;
+
// FIXME: really, we're in the repaint phase here, and the following queries are legal.
// Until those states are fully fledged, I'll just disable the ASSERTS.
DisableCompositingQueryAsserts disabler;
@@ -107,16 +111,30 @@ void RenderLayerRepainter::clearRepaintRects()
void RenderLayerRepainter::computeRepaintRects(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap* geometryMap)
{
+ if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled())
+ return;
+
m_repaintRect = m_renderer->clippedOverflowRectForRepaint(repaintContainer);
m_outlineBox = m_renderer->outlineBoundsForRepaint(repaintContainer, geometryMap);
}
void RenderLayerRepainter::computeRepaintRectsIncludingDescendants()
{
- // FIXME: computeRepaintRects() has to walk up the parent chain for every layer to compute the rects.
- // We should make this more efficient.
- // FIXME: it's wrong to call this when layout is not up-to-date, which we do.
- computeRepaintRects(m_renderer->containerForRepaint());
+ if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled()) {
+ // FIXME: We want RenderLayerRepainter to go away when
+ // repaint-after-layout is on by default so we need to figure out how to
+ // handle this update.
+ //
+ // This is a little silly as we create and immediately destroy the RAII
+ // object but it makes sure we correctly set all of the repaint flags.
+ LayoutRectRecorder recorder(*m_renderer);
+
+ } else {
+ // FIXME: computeRepaintRects() has to walk up the parent chain for every layer to compute the rects.
+ // We should make this more efficient.
+ // FIXME: it's wrong to call this when layout is not up-to-date, which we do.
+ computeRepaintRects(m_renderer->containerForRepaint());
+ }
for (RenderLayer* layer = m_renderer->layer()->firstChild(); layer; layer = layer->nextSibling())
layer->repainter().computeRepaintRectsIncludingDescendants();
@@ -124,6 +142,9 @@ void RenderLayerRepainter::computeRepaintRectsIncludingDescendants()
inline bool RenderLayerRepainter::shouldRepaintLayer() const
{
+ if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled())
+ return false;
+
if (m_repaintStatus != NeedsFullRepaintForPositionedMovementLayout)
return true;
@@ -145,7 +166,12 @@ void RenderLayerRepainter::repaintIncludingNonCompositingDescendants(RenderLayer
LayoutRect RenderLayerRepainter::repaintRectIncludingNonCompositingDescendants() const
{
- LayoutRect repaintRect = m_repaintRect;
+ LayoutRect repaintRect;
+ if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled())
+ repaintRect = m_renderer->newRepaintRect();
+ else
+ repaintRect = m_repaintRect;
+
for (RenderLayer* child = m_renderer->layer()->firstChild(); child; child = child->nextSibling()) {
// Don't include repaint rects for composited child layers; they will paint themselves and have a different origin.
if (child->hasCompositedLayerMapping())
« no previous file with comments | « Source/core/rendering/RenderLayerModelObject.cpp ('k') | Source/core/rendering/RenderLayerScrollableArea.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698