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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/paint/PaintController.h

Issue 2080593002: Revert of Let FrameView track object paint invalidations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@TrackInvalidation
Patch Set: Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 PaintController_h 5 #ifndef PaintController_h
6 #define PaintController_h 6 #define PaintController_h
7 7
8 #include "platform/PlatformExport.h" 8 #include "platform/PlatformExport.h"
9 #include "platform/RuntimeEnabledFeatures.h" 9 #include "platform/RuntimeEnabledFeatures.h"
10 #include "platform/geometry/IntRect.h" 10 #include "platform/geometry/IntRect.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 { 48 {
49 // New display items should be committed before PaintController is destr ucted. 49 // New display items should be committed before PaintController is destr ucted.
50 DCHECK(m_newDisplayItemList.isEmpty()); 50 DCHECK(m_newDisplayItemList.isEmpty());
51 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS 51 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS
52 DisplayItemClient::endShouldKeepAliveAllClients(this); 52 DisplayItemClient::endShouldKeepAliveAllClients(this);
53 #endif 53 #endif
54 } 54 }
55 55
56 void invalidateAll(); 56 void invalidateAll();
57 57
58 // Record when paint offsets change during paint.
59 void invalidatePaintOffset(const DisplayItemClient&);
60 #if DCHECK_IS_ON()
61 bool paintOffsetWasInvalidated(const DisplayItemClient&) const;
62 #endif
63
58 // These methods are called during painting. 64 // These methods are called during painting.
59 65
60 // Provide a new set of paint chunk properties to apply to recorded display 66 // Provide a new set of paint chunk properties to apply to recorded display
61 // items, for Slimming Paint v2. 67 // items, for Slimming Paint v2.
62 void updateCurrentPaintChunkProperties(const PaintChunkProperties&); 68 void updateCurrentPaintChunkProperties(const PaintChunkProperties&);
63 69
64 // Retrieve the current paint properties. 70 // Retrieve the current paint properties.
65 const PaintChunkProperties& currentPaintChunkProperties() const; 71 const PaintChunkProperties& currentPaintChunkProperties() const;
66 72
67 template <typename DisplayItemClass, typename... Args> 73 template <typename DisplayItemClass, typename... Args>
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 // Returns displayItemList added using createAndAppend() since beginning or 140 // Returns displayItemList added using createAndAppend() since beginning or
135 // the last commitNewDisplayItems(). Use with care. 141 // the last commitNewDisplayItems(). Use with care.
136 DisplayItemList& newDisplayItemList() { return m_newDisplayItemList; } 142 DisplayItemList& newDisplayItemList() { return m_newDisplayItemList; }
137 143
138 void appendDebugDrawingAfterCommit(const DisplayItemClient&, PassRefPtr<SkPi cture>, const LayoutSize& offsetFromLayoutObject); 144 void appendDebugDrawingAfterCommit(const DisplayItemClient&, PassRefPtr<SkPi cture>, const LayoutSize& offsetFromLayoutObject);
139 145
140 #ifndef NDEBUG 146 #ifndef NDEBUG
141 void showDebugData() const; 147 void showDebugData() const;
142 #endif 148 #endif
143 149
150 // This is called only if we are tracking paint invalidation for testing, or DCHECK_IS_ON()
151 // for error checking and debugging.
152 void displayItemClientWasInvalidated(const DisplayItemClient&);
153
144 #if DCHECK_IS_ON() 154 #if DCHECK_IS_ON()
155 bool hasInvalidations() { return !m_invalidations.isEmpty(); }
156 #endif
157
158 #if DCHECK_IS_ON()
145 void assertDisplayItemClientsAreLive(); 159 void assertDisplayItemClientsAreLive();
146 #endif 160 #endif
147 161
148 protected: 162 protected:
149 PaintController() 163 PaintController()
150 : m_newDisplayItemList(kInitialDisplayItemListCapacityBytes) 164 : m_newDisplayItemList(kInitialDisplayItemListCapacityBytes)
151 , m_constructionDisabled(false) 165 , m_constructionDisabled(false)
152 , m_subsequenceCachingDisabled(false) 166 , m_subsequenceCachingDisabled(false)
153 , m_textPainted(false) 167 , m_textPainted(false)
154 , m_imagePainted(false) 168 , m_imagePainted(false)
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 void updateCacheGeneration(); 200 void updateCacheGeneration();
187 201
188 // The last complete paint artifact. 202 // The last complete paint artifact.
189 // In SPv2, this includes paint chunks as well as display items. 203 // In SPv2, this includes paint chunks as well as display items.
190 PaintArtifact m_currentPaintArtifact; 204 PaintArtifact m_currentPaintArtifact;
191 205
192 // Data being used to build the next paint artifact. 206 // Data being used to build the next paint artifact.
193 DisplayItemList m_newDisplayItemList; 207 DisplayItemList m_newDisplayItemList;
194 PaintChunker m_newPaintChunks; 208 PaintChunker m_newPaintChunks;
195 209
210 #if DCHECK_IS_ON()
211 // Set of clients which had paint offset changes since the last commit. This is used for
212 // ensuring paint offsets are only updated once and are the same in all phas es.
213 HashSet<const DisplayItemClient*> m_clientsWithPaintOffsetInvalidations;
214 #endif
215
196 // Allow display item construction to be disabled to isolate the costs of co nstruction 216 // Allow display item construction to be disabled to isolate the costs of co nstruction
197 // in performance metrics. 217 // in performance metrics.
198 bool m_constructionDisabled; 218 bool m_constructionDisabled;
199 219
200 // Allow subsequence caching to be disabled to test the cost of display item caching. 220 // Allow subsequence caching to be disabled to test the cost of display item caching.
201 bool m_subsequenceCachingDisabled; 221 bool m_subsequenceCachingDisabled;
202 222
203 // Indicates this PaintController has ever had text. It is never reset to fa lse. 223 // Indicates this PaintController has ever had text. It is never reset to fa lse.
204 bool m_textPainted; 224 bool m_textPainted;
205 bool m_imagePainted; 225 bool m_imagePainted;
206 226
207 int m_skippingCacheCount; 227 int m_skippingCacheCount;
208 228
209 int m_numCachedNewItems; 229 int m_numCachedNewItems;
210 230
211 #if DCHECK_IS_ON() 231 #if DCHECK_IS_ON()
232 // Record the debug names of invalidated clients for assertion and debugging .
233 Vector<String> m_invalidations;
234
212 // This is used to check duplicated ids during add(). We could also check 235 // This is used to check duplicated ids during add(). We could also check
213 // during commitNewDisplayItems(), but checking during add() helps developer 236 // during commitNewDisplayItems(), but checking during add() helps developer
214 // easily find where the duplicated ids are from. 237 // easily find where the duplicated ids are from.
215 DisplayItemIndicesByClientMap m_newDisplayItemIndicesByClient; 238 DisplayItemIndicesByClientMap m_newDisplayItemIndicesByClient;
216 #endif 239 #endif
217 240
218 DisplayItemCacheGeneration m_currentCacheGeneration; 241 DisplayItemCacheGeneration m_currentCacheGeneration;
219 }; 242 };
220 243
221 } // namespace blink 244 } // namespace blink
222 245
223 #endif // PaintController_h 246 #endif // PaintController_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698