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

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

Issue 2082553002: Reland of Check DisplayItemCient aliveness in cached subsequences (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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
index 4a6bdbbb5f32c4ffd2ccd09b1b5e9bf0ed787f00..383c57c4a145b599735722ff2a6eaa0c1a3ad277 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
@@ -64,14 +64,19 @@
// Tests if this DisplayItemClient object has been created and has not been deleted yet.
bool isAlive() const;
// Called when any DisplayItem of this DisplayItemClient is added into PaintController
- // using PaintController::createAndAppend().
- void beginShouldKeepAlive(const void* paintController) const;
+ // using PaintController::createAndAppend() or into a cached subsequence.
+ void beginShouldKeepAlive(const void* owner) const;
// Clears all should-keep-alive DisplayItemClients of a PaintController. Called after
- // PaintController commits new display items.
- static void endShouldKeepAliveAllClients(const void* paintController);
+ // PaintController commits new display items or the subsequence owner is invalidated.
+ static void endShouldKeepAliveAllClients(const void* owner);
static void endShouldKeepAliveAllClients();
+
+ // Called to clear should-keep-alive of DisplayItemClients in a subsequence if this
+ // object is a subsequence.
+#define ON_DISPLAY_ITEM_CLIENT_INVALIDATION() endShouldKeepAliveAllClients(this)
#else
virtual ~DisplayItemClient() { }
+#define ON_DISPLAY_ITEM_CLIENT_INVALIDATION()
#endif
virtual String debugName() const = 0;
@@ -88,7 +93,11 @@
#define DISPLAY_ITEM_CACHE_STATUS_IMPLEMENTATION \
bool displayItemsAreCached(DisplayItemCacheGeneration cacheGeneration) const final { return m_cacheGeneration.matches(cacheGeneration); } \
void setDisplayItemsCached(DisplayItemCacheGeneration cacheGeneration) const final { m_cacheGeneration = cacheGeneration; } \
- void setDisplayItemsUncached() const final { m_cacheGeneration.invalidate(); } \
+ void setDisplayItemsUncached() const final \
+ { \
+ m_cacheGeneration.invalidate(); \
+ ON_DISPLAY_ITEM_CLIENT_INVALIDATION(); \
+ } \
mutable DisplayItemCacheGeneration m_cacheGeneration;
#define DISPLAY_ITEM_CACHE_STATUS_UNCACHEABLE_IMPLEMENTATION \

Powered by Google App Engine
This is Rietveld 408576698