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

Side by Side Diff: third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.h

Issue 2498823002: Paint invalidation of local attachment backgrounds (Closed)
Patch Set: - Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ObjectPaintInvalidator_h 5 #ifndef ObjectPaintInvalidator_h
6 #define ObjectPaintInvalidator_h 6 #define ObjectPaintInvalidator_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "platform/graphics/PaintInvalidationReason.h" 9 #include "platform/graphics/PaintInvalidationReason.h"
10 #include "wtf/Allocator.h" 10 #include "wtf/Allocator.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 97
98 PaintInvalidationReason invalidatePaintIfNeeded() { 98 PaintInvalidationReason invalidatePaintIfNeeded() {
99 return invalidatePaintIfNeededWithComputedReason( 99 return invalidatePaintIfNeededWithComputedReason(
100 computePaintInvalidationReason()); 100 computePaintInvalidationReason());
101 } 101 }
102 102
103 PaintInvalidationReason computePaintInvalidationReason(); 103 PaintInvalidationReason computePaintInvalidationReason();
104 PaintInvalidationReason invalidatePaintIfNeededWithComputedReason( 104 PaintInvalidationReason invalidatePaintIfNeededWithComputedReason(
105 PaintInvalidationReason); 105 PaintInvalidationReason);
106 106
107 // This function tries to minimize the amount of invalidation generated by
108 // invalidating the "difference" between |m_context.oldVisualRect| and
109 // |m_context.newVisualRect|. This means invalidating the union of the
110 // previous rectangles excluding their intersection. The use case is when an
111 // element only requires a paint invalidation (which means that its content
112 // didn't change) and its bounds changed but its location didn't. If we don't
113 // meet the criteria for an incremental paint, the alternative is a full paint
114 // invalidation. Returns true if any paint invalidation is done.
115 bool incrementallyInvalidatePaint();
116
117 private:
118 void invalidateSelectionIfNeeded(PaintInvalidationReason);
119
120 // This function generates a full invalidation, which means invalidating both 107 // This function generates a full invalidation, which means invalidating both
121 // |oldVisualRect| and |newVisualRect|. This is the default choice when 108 // |oldVisualRect| and |newVisualRect|. This is the default choice when
122 // generating an invalidation, as it is always correct, albeit it may force 109 // generating an invalidation, as it is always correct, albeit it may force
123 // some extra painting. 110 // some extra painting.
124 void fullyInvalidatePaint(PaintInvalidationReason, 111 void fullyInvalidatePaint(PaintInvalidationReason,
125 const LayoutRect& oldVisualRect, 112 const LayoutRect& oldVisualRect,
126 const LayoutRect& newVisualRect); 113 const LayoutRect& newVisualRect);
127 114
115 private:
116 void invalidateSelectionIfNeeded(PaintInvalidationReason);
117
128 const PaintInvalidatorContext& m_context; 118 const PaintInvalidatorContext& m_context;
129 }; 119 };
130 120
131 // TODO(crbug.com/457415): We should not allow paint invalidation out of paint 121 // TODO(crbug.com/457415): We should not allow paint invalidation out of paint
132 // invalidation state. 122 // invalidation state.
133 class DisablePaintInvalidationStateAsserts { 123 class DisablePaintInvalidationStateAsserts {
134 STACK_ALLOCATED(); 124 STACK_ALLOCATED();
135 WTF_MAKE_NONCOPYABLE(DisablePaintInvalidationStateAsserts); 125 WTF_MAKE_NONCOPYABLE(DisablePaintInvalidationStateAsserts);
136 126
137 public: 127 public:
138 DisablePaintInvalidationStateAsserts(); 128 DisablePaintInvalidationStateAsserts();
139 129
140 private: 130 private:
141 AutoReset<bool> m_disabler; 131 AutoReset<bool> m_disabler;
142 }; 132 };
143 133
144 } // namespace blink 134 } // namespace blink
145 135
146 #endif 136 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698