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

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

Issue 2071053003: Invalidate as DisplayItemClient when PaintLayer is setNeedsRepaint (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@TrackObjectInvalidation
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
« no previous file with comments | « third_party/WebKit/Source/core/paint/PaintLayer.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "platform/graphics/paint/PaintController.h" 5 #include "platform/graphics/paint/PaintController.h"
6 6
7 #include "platform/TraceEvent.h" 7 #include "platform/TraceEvent.h"
8 #include "platform/graphics/GraphicsLayer.h" 8 #include "platform/graphics/GraphicsLayer.h"
9 #include "platform/graphics/paint/DrawingDisplayItem.h" 9 #include "platform/graphics/paint/DrawingDisplayItem.h"
10 #include "third_party/skia/include/core/SkPictureAnalyzer.h" 10 #include "third_party/skia/include/core/SkPictureAnalyzer.h"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 } 225 }
226 226
227 void PaintController::copyCachedSubsequence(const DisplayItemList& currentList, DisplayItemList::iterator& currentIt, DisplayItemList& updatedList, SkPictureGpu Analyzer& gpuAnalyzer) 227 void PaintController::copyCachedSubsequence(const DisplayItemList& currentList, DisplayItemList::iterator& currentIt, DisplayItemList& updatedList, SkPictureGpu Analyzer& gpuAnalyzer)
228 { 228 {
229 DCHECK(currentIt->getType() == DisplayItem::Subsequence); 229 DCHECK(currentIt->getType() == DisplayItem::Subsequence);
230 DisplayItem::Id endSubsequenceId(currentIt->client(), DisplayItem::EndSubseq uence); 230 DisplayItem::Id endSubsequenceId(currentIt->client(), DisplayItem::EndSubseq uence);
231 do { 231 do {
232 // We should always find the EndSubsequence display item. 232 // We should always find the EndSubsequence display item.
233 DCHECK(currentIt != m_currentPaintArtifact.getDisplayItemList().end()); 233 DCHECK(currentIt != m_currentPaintArtifact.getDisplayItemList().end());
234 DCHECK(currentIt->hasValidClient()); 234 DCHECK(currentIt->hasValidClient());
235 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS 235 CHECK(clientCacheIsValid(currentIt->client()) || !currentIt->isCacheable ());
chrishtr 2016/06/18 22:13:54 DCHECK instead?
Xianzhu 2016/06/18 23:51:25 Used CHECK because I want this for DisplayItemClie
236 CHECK(currentIt->client().isAlive());
237 #endif
238 updatedList.appendByMoving(*currentIt, currentList.visualRect(currentIt - m_currentPaintArtifact.getDisplayItemList().begin()), gpuAnalyzer); 236 updatedList.appendByMoving(*currentIt, currentList.visualRect(currentIt - m_currentPaintArtifact.getDisplayItemList().begin()), gpuAnalyzer);
239 ++currentIt; 237 ++currentIt;
240 } while (!endSubsequenceId.matches(updatedList.last())); 238 } while (!endSubsequenceId.matches(updatedList.last()));
241 } 239 }
242 240
243 static IntRect visualRectForDisplayItem(const DisplayItem& displayItem, const La youtSize& offsetFromLayoutObject) 241 static IntRect visualRectForDisplayItem(const DisplayItem& displayItem, const La youtSize& offsetFromLayoutObject)
244 { 242 {
245 LayoutRect visualRect = displayItem.client().visualRect(); 243 LayoutRect visualRect = displayItem.client().visualRect();
246 visualRect.move(-offsetFromLayoutObject); 244 visualRect.move(-offsetFromLayoutObject);
247 return enclosingIntRect(visualRect); 245 return enclosingIntRect(visualRect);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 DisplayItemList::iterator currentIt = m_currentPaintArtifact.getDisplayItemL ist().begin(); 304 DisplayItemList::iterator currentIt = m_currentPaintArtifact.getDisplayItemL ist().begin();
307 DisplayItemList::iterator currentEnd = m_currentPaintArtifact.getDisplayItem List().end(); 305 DisplayItemList::iterator currentEnd = m_currentPaintArtifact.getDisplayItem List().end();
308 for (DisplayItemList::iterator newIt = m_newDisplayItemList.begin(); newIt ! = m_newDisplayItemList.end(); ++newIt) { 306 for (DisplayItemList::iterator newIt = m_newDisplayItemList.begin(); newIt ! = m_newDisplayItemList.end(); ++newIt) {
309 const DisplayItem& newDisplayItem = *newIt; 307 const DisplayItem& newDisplayItem = *newIt;
310 const DisplayItem::Id newDisplayItemId = newDisplayItem.nonCachedId(); 308 const DisplayItem::Id newDisplayItemId = newDisplayItem.nonCachedId();
311 bool newDisplayItemHasCachedType = newDisplayItem.getType() != newDispla yItemId.type; 309 bool newDisplayItemHasCachedType = newDisplayItem.getType() != newDispla yItemId.type;
312 310
313 bool isSynchronized = currentIt != currentEnd && newDisplayItemId.matche s(*currentIt); 311 bool isSynchronized = currentIt != currentEnd && newDisplayItemId.matche s(*currentIt);
314 312
315 if (newDisplayItemHasCachedType) { 313 if (newDisplayItemHasCachedType) {
316 #if DCHECK_IS_ON()
317 DCHECK(newDisplayItem.isCached()); 314 DCHECK(newDisplayItem.isCached());
318 DCHECK(clientCacheIsValid(newDisplayItem.client()) || (RuntimeEnable dFeatures::slimmingPaintInvalidationEnabled() && !paintOffsetWasInvalidated(newD isplayItem.client()))); 315 CHECK(clientCacheIsValid(newDisplayItem.client()));
chrishtr 2016/06/18 22:13:54 Why is this now irrelevant?
Xianzhu 2016/06/18 23:51:25 The removed code is for paint offset caching code
chrishtr 2016/06/18 22:13:54 DCHECK?
Xianzhu 2016/06/18 23:51:25 Ditto.
319 #endif
320 if (!isSynchronized) { 316 if (!isSynchronized) {
321 currentIt = findOutOfOrderCachedItem(newDisplayItemId, outOfOrde rIndexContext); 317 currentIt = findOutOfOrderCachedItem(newDisplayItemId, outOfOrde rIndexContext);
322 318
323 if (currentIt == currentEnd) { 319 if (currentIt == currentEnd) {
324 #ifndef NDEBUG 320 #ifndef NDEBUG
325 showDebugData(); 321 showDebugData();
326 WTFLogAlways("%s not found in m_currentDisplayItemList\n", n ewDisplayItem.asDebugString().utf8().data()); 322 WTFLogAlways("%s not found in m_currentDisplayItemList\n", n ewDisplayItem.asDebugString().utf8().data());
327 #endif 323 #endif
328 NOTREACHED(); 324 NOTREACHED();
329 // We did not find the cached display item. This should be i mpossible, but may occur if there is a bug 325 // We did not find the cached display item. This should be i mpossible, but may occur if there is a bug
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 527
532 void PaintController::showDebugData() const 528 void PaintController::showDebugData() const
533 { 529 {
534 WTFLogAlways("current display item list: [%s]\n", displayItemListAsDebugStri ng(m_currentPaintArtifact.getDisplayItemList()).utf8().data()); 530 WTFLogAlways("current display item list: [%s]\n", displayItemListAsDebugStri ng(m_currentPaintArtifact.getDisplayItemList()).utf8().data());
535 WTFLogAlways("new display item list: [%s]\n", displayItemListAsDebugString(m _newDisplayItemList).utf8().data()); 531 WTFLogAlways("new display item list: [%s]\n", displayItemListAsDebugString(m _newDisplayItemList).utf8().data());
536 } 532 }
537 533
538 #endif // ifndef NDEBUG 534 #endif // ifndef NDEBUG
539 535
540 } // namespace blink 536 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/paint/PaintLayer.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698