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

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

Issue 2031623002: Track DisplayItemClient aliveness for each PaintController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
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/platform/graphics/paint/DisplayItemClient.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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 m_newPaintChunks.decrementDisplayItemIndex(); 60 m_newPaintChunks.decrementDisplayItemIndex();
61 } 61 }
62 62
63 void PaintController::processNewItem(DisplayItem& displayItem) 63 void PaintController::processNewItem(DisplayItem& displayItem)
64 { 64 {
65 DCHECK(!m_constructionDisabled); 65 DCHECK(!m_constructionDisabled);
66 DCHECK(!skippingCache() || !displayItem.isCached()); 66 DCHECK(!skippingCache() || !displayItem.isCached());
67 67
68 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS 68 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS
69 if (!skippingCache() && (displayItem.isCacheable() || displayItem.isCached() )) 69 if (!skippingCache() && (displayItem.isCacheable() || displayItem.isCached() ))
70 displayItem.client().beginShouldKeepAlive(); 70 displayItem.client().beginShouldKeepAlive(this);
71 #endif 71 #endif
72 72
73 if (displayItem.isCached()) 73 if (displayItem.isCached())
74 ++m_numCachedNewItems; 74 ++m_numCachedNewItems;
75 75
76 #if DCHECK_IS_ON() 76 #if DCHECK_IS_ON()
77 // Verify noop begin/end pairs have been removed. 77 // Verify noop begin/end pairs have been removed.
78 if (m_newDisplayItemList.size() >= 2 && displayItem.isEnd()) { 78 if (m_newDisplayItemList.size() >= 2 && displayItem.isEnd()) {
79 const auto& beginDisplayItem = m_newDisplayItemList[m_newDisplayItemList .size() - 2]; 79 const auto& beginDisplayItem = m_newDisplayItemList[m_newDisplayItemList .size() - 2];
80 if (beginDisplayItem.isBegin() && beginDisplayItem.getType() != DisplayI tem::Subsequence && !beginDisplayItem.drawsContent()) 80 if (beginDisplayItem.isBegin() && beginDisplayItem.getType() != DisplayI tem::Subsequence && !beginDisplayItem.drawsContent())
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 402
403 void PaintController::updateCacheGeneration() 403 void PaintController::updateCacheGeneration()
404 { 404 {
405 m_currentCacheGeneration = DisplayItemCacheGeneration::next(); 405 m_currentCacheGeneration = DisplayItemCacheGeneration::next();
406 for (const DisplayItem& displayItem : m_currentPaintArtifact.getDisplayItemL ist()) { 406 for (const DisplayItem& displayItem : m_currentPaintArtifact.getDisplayItemL ist()) {
407 if (!displayItem.isCacheable()) 407 if (!displayItem.isCacheable())
408 continue; 408 continue;
409 displayItem.client().setDisplayItemsCached(m_currentCacheGeneration); 409 displayItem.client().setDisplayItemsCached(m_currentCacheGeneration);
410 } 410 }
411 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS 411 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS
412 DisplayItemClient::endShouldKeepAliveAllClients(); 412 DisplayItemClient::endShouldKeepAliveAllClients(this);
413 #endif 413 #endif
414 } 414 }
415 415
416 #if DCHECK_IS_ON() 416 #if DCHECK_IS_ON()
417 417
418 void PaintController::checkUnderInvalidation(DisplayItemList::iterator& newIt, D isplayItemList::iterator& currentIt) 418 void PaintController::checkUnderInvalidation(DisplayItemList::iterator& newIt, D isplayItemList::iterator& currentIt)
419 { 419 {
420 DCHECK(RuntimeEnabledFeatures::slimmingPaintUnderInvalidationCheckingEnabled ()); 420 DCHECK(RuntimeEnabledFeatures::slimmingPaintUnderInvalidationCheckingEnabled ());
421 DCHECK(newIt->isCached()); 421 DCHECK(newIt->isCached());
422 422
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 536
537 void PaintController::showDebugData() const 537 void PaintController::showDebugData() const
538 { 538 {
539 WTFLogAlways("current display item list: [%s]\n", displayItemListAsDebugStri ng(m_currentPaintArtifact.getDisplayItemList()).utf8().data()); 539 WTFLogAlways("current display item list: [%s]\n", displayItemListAsDebugStri ng(m_currentPaintArtifact.getDisplayItemList()).utf8().data());
540 WTFLogAlways("new display item list: [%s]\n", displayItemListAsDebugString(m _newDisplayItemList).utf8().data()); 540 WTFLogAlways("new display item list: [%s]\n", displayItemListAsDebugString(m _newDisplayItemList).utf8().data());
541 } 541 }
542 542
543 #endif // ifndef NDEBUG 543 #endif // ifndef NDEBUG
544 544
545 } // namespace blink 545 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698