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

Unified Diff: third_party/WebKit/Source/core/layout/LayoutObject.h

Issue 2669003002: Optimize outline paint invalidation (Closed)
Patch Set: - Created 3 years, 11 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: third_party/WebKit/Source/core/layout/LayoutObject.h
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.h b/third_party/WebKit/Source/core/layout/LayoutObject.h
index 6a4a5b07426a76c3decd8b6bec230ff82b425a26..67d3cacb81f77ff7e8250953bc5e9f39ef709a8f 100644
--- a/third_party/WebKit/Source/core/layout/LayoutObject.h
+++ b/third_party/WebKit/Source/core/layout/LayoutObject.h
@@ -1749,6 +1749,10 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
void setPreviousBackgroundObscured(bool b) {
m_layoutObject.setPreviousBackgroundObscured(b);
}
+ void updatePreviousOutlineMayBeAffectedByDescendants() {
+ m_layoutObject.setPreviousOutlineMayBeAffectedByDescendants(
+ m_layoutObject.outlineMayBeAffectedByDescendants());
+ }
void clearPreviousVisualRects() {
m_layoutObject.clearPreviousVisualRects();
@@ -1756,6 +1760,7 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
void setNeedsPaintPropertyUpdate() {
m_layoutObject.setNeedsPaintPropertyUpdate();
}
+
#if DCHECK_IS_ON()
// Same as setNeedsPaintPropertyUpdate() but does not mark ancestors as
// having a descendant needing a paint property update.
@@ -1871,6 +1876,13 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
m_bitfields.setBackgroundChangedSinceLastPaintInvalidation(true);
}
+ bool outlineMayBeAffectedByDescendants() const {
+ return m_bitfields.outlineMayBeAffectedByDescendants();
+ }
+ bool previousOutlineMayBeAffectedByDescendants() const {
+ return m_bitfields.previousOutlineMayBeAffectedByDescendants();
+ }
+
protected:
enum LayoutObjectType {
LayoutObjectBr,
@@ -2049,6 +2061,13 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
m_bitfields.setContainsInlineWithOutlineAndContinuation(b);
}
+ void setOutlineMayBeAffectedByDescendants(bool b) {
+ m_bitfields.setOutlineMayBeAffectedByDescendants(b);
+ }
+ void setPreviousOutlineMayBeAffectedByDescendants(bool b) {
+ m_bitfields.setPreviousOutlineMayBeAffectedByDescendants(b);
+ }
+
private:
// Adjusts a visual rect in the space of |m_previousVisualRect| to be in the
// space of the |paintInvalidationContainer|, if needed. They can be different
@@ -2215,6 +2234,8 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
m_subtreeNeedsPaintPropertyUpdate(true),
m_descendantNeedsPaintPropertyUpdate(true),
m_backgroundChangedSinceLastPaintInvalidation(false),
+ m_outlineMayBeAffectedByDescendants(false),
+ m_previousOutlineMayBeAffectedByDescendants(false),
m_positionedState(IsStaticallyPositioned),
m_selectionState(SelectionNone),
m_backgroundObscurationState(BackgroundObscurationStatusInvalid),
@@ -2397,9 +2418,18 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
ADD_BOOLEAN_BITFIELD(backgroundChangedSinceLastPaintInvalidation,
BackgroundChangedSinceLastPaintInvalidation);
+ // Whether shape of outline may be affected by any descendants. This is
+ // updated before paint invalidation, checked during paint invalidation.
+ ADD_BOOLEAN_BITFIELD(outlineMayBeAffectedByDescendants,
+ OutlineMayBeAffectedByDescendants);
+ // The outlineMayBeAffectedByDescendants status of the last paint
+ // invalidation.
+ ADD_BOOLEAN_BITFIELD(previousOutlineMayBeAffectedByDescendants,
+ PreviousOutlineMayBeAffectedByDescendants);
+
protected:
// Use protected to avoid warning about unused variable.
- unsigned m_unusedBits : 6;
+ unsigned m_unusedBits : 4;
private:
// This is the cached 'position' value of this object

Powered by Google App Engine
This is Rietveld 408576698