Index: Source/core/rendering/RenderObject.h |
diff --git a/Source/core/rendering/RenderObject.h b/Source/core/rendering/RenderObject.h |
index 1cbb6445c83fdb3cde4465053662e57f248e38bf..23aade146b60a7739dc7bb1ec335f60deecbee64 100644 |
--- a/Source/core/rendering/RenderObject.h |
+++ b/Source/core/rendering/RenderObject.h |
@@ -33,6 +33,7 @@ |
#include "core/fetch/ImageResourceClient.h" |
#include "core/html/HTMLElement.h" |
#include "core/rendering/HitTestRequest.h" |
+#include "core/rendering/PaintInvalidationState.h" |
#include "core/rendering/PaintPhase.h" |
#include "core/rendering/RenderObjectChildList.h" |
#include "core/rendering/ScrollAlignment.h" |
@@ -55,7 +56,6 @@ class HitTestLocation; |
class HitTestResult; |
class InlineBox; |
class InlineFlowBox; |
-class PaintInvalidationState; |
class Position; |
class PositionWithAffinity; |
class PseudoStyleRequest; |
@@ -1036,7 +1036,7 @@ public: |
bool onlyNeededPositionedMovementLayout() const { return m_bitfields.onlyNeededPositionedMovementLayout(); } |
void setOnlyNeededPositionedMovementLayout(bool b) { m_bitfields.setOnlyNeededPositionedMovementLayout(b); } |
- void clearPaintInvalidationState(); |
+ void clearPaintInvalidationState(const PaintInvalidationState&); |
// layoutDidGetCalled indicates whether this render object was re-laid-out |
// since the last call to setLayoutDidGetCalled(false) on this object. |
@@ -1056,9 +1056,9 @@ public: |
bool neededLayoutBecauseOfChildren() const { return m_bitfields.neededLayoutBecauseOfChildren(); } |
void setNeededLayoutBecauseOfChildren(bool b) { m_bitfields.setNeededLayoutBecauseOfChildren(b); } |
- bool shouldCheckForPaintInvalidation() |
+ bool shouldCheckForPaintInvalidation(const PaintInvalidationState& paintInvalidationState) |
{ |
- return layoutDidGetCalled() || mayNeedPaintInvalidation() || shouldDoFullPaintInvalidation() || shouldDoFullPaintInvalidationIfSelfPaintingLayer(); |
+ return paintInvalidationState.forceCheckForPaintInvalidation() || layoutDidGetCalled() || mayNeedPaintInvalidation() || shouldDoFullPaintInvalidation() || shouldDoFullPaintInvalidationIfSelfPaintingLayer(); |
} |
bool supportsLayoutStateCachedOffsets() const { return !hasColumns() && !hasTransform() && !hasReflection() && !style()->isFlippedBlocksWritingMode(); } |
@@ -1155,7 +1155,7 @@ private: |
void markContainingBlockChainForPaintInvalidation() |
{ |
- for (RenderObject* container = this->container(); container && !container->shouldCheckForPaintInvalidation(); container = container->container()) |
+ for (RenderObject* container = this->container(); container && !container->mayNeedPaintInvalidation() && !container->layoutDidGetCalled(); container = container->container()) |
Julien - ping for review
2014/08/01 21:20:01
Won't this make us over-mark as we used to break e
abarth-chromium
2014/08/01 21:22:52
Sure. I'll undo this part of the change. The dow
|
container->setMayNeedPaintInvalidation(true); |
} |