Index: Source/core/layout/LayoutObject.h |
diff --git a/Source/core/layout/LayoutObject.h b/Source/core/layout/LayoutObject.h |
index 84e8af67fea41dae10f28f58c5ebb7ae6fe14f0d..296b8bfcc7fc582684610e4c5a84f59cfc6f4d9c 100644 |
--- a/Source/core/layout/LayoutObject.h |
+++ b/Source/core/layout/LayoutObject.h |
@@ -913,6 +913,7 @@ public: |
inline void setSelectionStateIfNeeded(SelectionState); |
bool canUpdateSelectionOnRootLineBoxes() const; |
+ // TODO: Remove for slimming paint v2. |
// A single rectangle that encompasses all of the selected objects within this object. Used to determine the tightest |
// possible bounding box for the selection. The rect returned is in the coordinate space of the paint invalidation container's backing. |
virtual LayoutRect selectionRectForPaintInvalidation(const LayoutBoxModelObject* /*paintInvalidationContainer*/) const { return LayoutRect(); } |
@@ -1032,6 +1033,7 @@ public: |
bool shouldInvalidateOverflowForPaint() const { return m_bitfields.shouldInvalidateOverflowForPaint(); } |
virtual void clearPaintInvalidationState(const PaintInvalidationState&); |
+ void clearSelfPaintInvalidationFlags(); |
bool mayNeedPaintInvalidation() const { return m_bitfields.mayNeedPaintInvalidation(); } |
void setMayNeedPaintInvalidation(); |
@@ -1049,7 +1051,12 @@ public: |
bool shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState() const |
{ |
- return mayNeedPaintInvalidation() || shouldDoFullPaintInvalidation() || shouldInvalidateSelection() || m_bitfields.childShouldCheckForPaintInvalidation(); |
+ return selfShouldCheckForPaintInvalidation() || m_bitfields.childShouldCheckForPaintInvalidation(); |
+ } |
+ |
+ bool selfShouldCheckForPaintInvalidation() const |
+ { |
+ return mayNeedPaintInvalidation() || shouldDoFullPaintInvalidation() || shouldInvalidateSelection(); |
} |
virtual bool supportsPaintInvalidationStateCachedOffsets() const { return !hasTransformRelatedProperty() && !hasReflection() && !style()->isFlippedBlocksWritingMode(); } |
@@ -1076,6 +1083,7 @@ public: |
bool childNeedsRepaint() const { return m_bitfields.childNeedsRepaint(); } |
bool shouldCheckForRepaint() const { return selfNeedsRepaint() || childNeedsRepaint(); } |
+ virtual PaintInvalidationReason invalidatePaintIfNeededForSlimmingPaintV2(const LayoutPoint& newPaintOffset); |
void clearRepaintFlagsRecursively(); |
protected: |
@@ -1246,6 +1254,7 @@ private: |
void invalidatePaintIncludingNonCompositingDescendantsInternal(const LayoutBoxModelObject& repaintContainer); |
+ // TODO: Remove for slimming paint v2. |
LayoutRect previousSelectionRectForPaintInvalidation() const; |
void setPreviousSelectionRectForPaintInvalidation(const LayoutRect&); |
@@ -1352,7 +1361,7 @@ private: |
{ |
} |
- // 32 bits have been used in the first word, and 18 in the second. |
+ // 32 bits have been used in the first word, and 19 in the second. |
ADD_BOOLEAN_BITFIELD(selfNeedsLayout, SelfNeedsLayout); |
ADD_BOOLEAN_BITFIELD(shouldInvalidateOverflowForPaint, ShouldInvalidateOverflowForPaint); // TODO(wangxianzhu): Remove for slimming paint v2. |
ADD_BOOLEAN_BITFIELD(childShouldCheckForPaintInvalidation, ChildShouldCheckForPaintInvalidation); |
@@ -1461,12 +1470,17 @@ private: |
// This stores the paint invalidation rect from the previous frame. This rect does *not* account for composited scrolling. See |
// adjustInvalidationRectForCompositedScrolling(). |
+ // TODO: Remove for slimming paint v2. |
LayoutRect m_previousPaintInvalidationRect; |
// This stores the position in the paint invalidation backing's coordinate. |
// It is used to detect layoutObject shifts that forces a full invalidation. |
// This point does *not* account for composited scrolling. See adjustInvalidationRectForCompositedScrolling(). |
- LayoutPoint m_previousPositionFromPaintInvalidationBacking; |
+ union { |
+ LayoutPoint m_previousPositionFromPaintInvalidationBacking; // TODO: Remove for slimming paint v2. |
+ // For slimming paint v2: previous paint offset in the space of the nearest transform container. |
+ LayoutPoint m_previousPaintOffset; |
+ }; |
}; |
// FIXME: remove this once the layout object lifecycle ASSERTS are no longer hit. |