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

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

Issue 264963004: Mark when we may have been invalidated to early out on repaintTreeAfterLayout. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 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/RenderBlock.cpp
diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp
index 66e6126d4009e68919bbc0b2771651602a68ec54..a7b4d75a80a1e7a4a565eec948246a377757af24 100644
--- a/Source/core/rendering/RenderBlock.cpp
+++ b/Source/core/rendering/RenderBlock.cpp
@@ -362,8 +362,12 @@ void RenderBlock::styleDidChange(StyleDifference diff, const RenderStyle* oldSty
void RenderBlock::repaintTreeAfterLayout()
{
+ bool maybeInvalidated = mayNeedInvalidation();
RenderBox::repaintTreeAfterLayout();
+ if (!maybeInvalidated)
+ return;
+
// Take care of positioned objects. This is required as LayoutState keeps a single clip rect.
if (TrackedRendererListHashSet* positionedObjects = this->positionedObjects()) {
TrackedRendererListHashSet::iterator end = positionedObjects->end();
@@ -1625,6 +1629,7 @@ void RenderBlock::layoutPositionedObjects(bool relayoutChildren, PositionedLayou
// FIXME: this should only be set from clearNeedsLayout crbug.com/361250
r->setLayoutDidGetCalled(true);
+ r->setMayNeedInvalidation(true);
SubtreeLayoutScope layoutScope(*r);
// A fixed position element with an absolute positioned ancestor has no way of knowing if the latter has changed position. So

Powered by Google App Engine
This is Rietveld 408576698