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

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

Issue 1979133003: Revert of Client side display item cache flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ScrollbarTheme
Patch Set: Created 4 years, 7 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/platform/graphics/paint/PaintController.h
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintController.h b/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
index eda39ff41e03e75780a895899090a8b53065cbcf..b9edbba2ab4b43aae356535d4854d61c6f3537ed 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
@@ -163,6 +163,15 @@
return m_trackedPaintInvalidationObjects ? *m_trackedPaintInvalidationObjects : Vector<String>();
}
+ bool clientHasCheckedPaintInvalidation(const DisplayItemClient& client) const
+ {
+ return m_clientsCheckedPaintInvalidation.contains(&client);
+ }
+ void setClientHasCheckedPaintInvalidation(const DisplayItemClient& client)
+ {
+ m_clientsCheckedPaintInvalidation.add(&client);
+ }
+
#if ENABLE(ASSERT)
void assertDisplayItemClientsAreLive();
#endif
@@ -170,18 +179,20 @@
protected:
PaintController()
: m_newDisplayItemList(kInitialDisplayItemListCapacityBytes)
+ , m_validlyCachedClientsDirty(false)
, m_constructionDisabled(false)
, m_subsequenceCachingDisabled(false)
, m_textPainted(false)
, m_imagePainted(false)
, m_skippingCacheCount(0)
, m_numCachedNewItems(0)
- , m_nextScope(1)
- { }
+ , m_nextScope(1) { }
private:
// Set new item state (scopes, cache skipping, etc) for a new item.
void processNewItem(DisplayItem&);
+
+ void updateValidlyCachedClientsIfNeeded() const;
#ifndef NDEBUG
WTF::String displayItemListAsDebugString(const DisplayItemList&) const;
@@ -209,8 +220,6 @@
void commitNewDisplayItemsInternal(const LayoutSize& offsetFromLayoutObject);
- void updateCacheGeneration();
-
// The last complete paint artifact.
// In SPv2, this includes paint chunks as well as display items.
PaintArtifact m_currentPaintArtifact;
@@ -218,6 +227,18 @@
// Data being used to build the next paint artifact.
DisplayItemList m_newDisplayItemList;
PaintChunker m_newPaintChunks;
+
+ // Contains all clients having valid cached paintings if updated.
+ // It's lazily updated in updateValidlyCachedClientsIfNeeded().
+ // TODO(wangxianzhu): In the future we can replace this with client-side repaint flags
+ // to avoid the cost of building and querying the hash table.
+ mutable HashSet<const DisplayItemClient*> m_validlyCachedClients;
+ mutable bool m_validlyCachedClientsDirty;
+
+ // Used during painting. Contains clients that have checked paint invalidation and
+ // are known to be valid.
+ // TODO(wangxianzhu): Use client side flag to avoid const of hash table.
+ HashSet<const DisplayItemClient*> m_clientsCheckedPaintInvalidation;
#if ENABLE(ASSERT)
// Set of clients which had paint offset changes since the last commit. This is used for
@@ -254,8 +275,6 @@
#endif
OwnPtr<Vector<String>> m_trackedPaintInvalidationObjects;
-
- DisplayItemCacheGeneration m_currentCacheGeneration;
};
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698