| 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 b9edbba2ab4b43aae356535d4854d61c6f3537ed..14ffa324c73b4f65b377c73bdae5538fc985dcac 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
|
| +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
|
| @@ -163,37 +163,33 @@ public:
|
| 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
|
|
|
| + bool canUseClientCacheStatus() const { return m_canUseClientCacheStatus; }
|
| + void setCanUseClientCacheStatus(bool b) { m_canUseClientCacheStatus = b; }
|
| +
|
| + unsigned currentCacheGeneration() const { return m_currentCacheGeneration; }
|
| +
|
| 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)
|
| + , m_canUseClientCacheStatus(false)
|
| + , m_currentCacheGeneration(DisplayItemClient::kInvalidCacheGeneration)
|
| + { }
|
|
|
| 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;
|
| #endif
|
| @@ -220,6 +216,9 @@ private:
|
|
|
| void commitNewDisplayItemsInternal(const LayoutSize& offsetFromLayoutObject);
|
|
|
| + static unsigned nextCacheGeneration();
|
| + void updateCacheGeneration();
|
| +
|
| // The last complete paint artifact.
|
| // In SPv2, this includes paint chunks as well as display items.
|
| PaintArtifact m_currentPaintArtifact;
|
| @@ -228,18 +227,6 @@ private:
|
| 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
|
| // ensuring paint offsets are only updated once and are the same in all phases.
|
| @@ -275,6 +262,9 @@ private:
|
| #endif
|
|
|
| OwnPtr<Vector<String>> m_trackedPaintInvalidationObjects;
|
| +
|
| + bool m_canUseClientCacheStatus;
|
| + unsigned m_currentCacheGeneration;
|
| };
|
|
|
| } // namespace blink
|
|
|