| 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 b62d5391553bd8bbad4b835d8e28fe7bf7d89b18..ad3fb8d8822fc7a0607a972463e1ed18e0c14a64 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
|
| +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
|
| @@ -19,6 +19,7 @@
|
| #include "platform/graphics/paint/Transform3DDisplayItem.h"
|
| #include "wtf/Alignment.h"
|
| #include "wtf/HashMap.h"
|
| +#include "wtf/HashSet.h"
|
| #include "wtf/PassOwnPtr.h"
|
| #include "wtf/Utility.h"
|
| #include "wtf/Vector.h"
|
| @@ -47,14 +48,14 @@ public:
|
| // which might be painted into by the display item client, in coordinate space of the GraphicsLayer.
|
| // TODO(pdr): define it for spv2.
|
| // |visualRect| can be nullptr if we know it's unchanged and PaintController has cached the previous value.
|
| - void invalidate(const DisplayItemClientWrapper&, PaintInvalidationReason, const IntRect* visualRect);
|
| - void invalidateUntracked(DisplayItemClient);
|
| + void invalidate(const DisplayItemClient&, PaintInvalidationReason, const IntRect* visualRect);
|
| + void invalidateUntracked(const DisplayItemClient&);
|
| void invalidateAll();
|
|
|
| // Record when paint offsets change during paint.
|
| - void invalidatePaintOffset(const DisplayItemClientWrapper&);
|
| + void invalidatePaintOffset(const DisplayItemClient&);
|
| #if ENABLE(ASSERT)
|
| - bool paintOffsetWasInvalidated(DisplayItemClient) const;
|
| + bool paintOffsetWasInvalidated(const DisplayItemClient&) const;
|
| #endif
|
|
|
| // These methods are called during painting.
|
| @@ -123,7 +124,7 @@ public:
|
| const DisplayItemList& displayItemList() const { return paintArtifact().displayItemList(); }
|
| const Vector<PaintChunk>& paintChunks() const { return paintArtifact().paintChunks(); }
|
|
|
| - bool clientCacheIsValid(DisplayItemClient) const;
|
| + bool clientCacheIsValid(const DisplayItemClient&) const;
|
| bool cacheIsEmpty() const { return m_currentPaintArtifact.isEmpty(); }
|
|
|
| bool displayItemConstructionIsDisabled() const { return m_constructionDisabled; }
|
| @@ -158,15 +159,15 @@ public:
|
| return m_trackedPaintInvalidationObjects ? *m_trackedPaintInvalidationObjects : Vector<String>();
|
| }
|
|
|
| - bool clientHasCheckedPaintInvalidation(DisplayItemClient client) const
|
| + bool clientHasCheckedPaintInvalidation(const DisplayItemClient& client) const
|
| {
|
| ASSERT(RuntimeEnabledFeatures::slimmingPaintSynchronizedPaintingEnabled());
|
| - return m_clientsCheckedPaintInvalidation.contains(client);
|
| + return m_clientsCheckedPaintInvalidation.contains(&client);
|
| }
|
| - void setClientHasCheckedPaintInvalidation(DisplayItemClient client)
|
| + void setClientHasCheckedPaintInvalidation(const DisplayItemClient& client)
|
| {
|
| ASSERT(RuntimeEnabledFeatures::slimmingPaintSynchronizedPaintingEnabled());
|
| - m_clientsCheckedPaintInvalidation.add(client);
|
| + m_clientsCheckedPaintInvalidation.add(&client);
|
| }
|
|
|
| protected:
|
| @@ -186,7 +187,7 @@ private:
|
|
|
| void updateValidlyCachedClientsIfNeeded() const;
|
|
|
| - void invalidateClient(const DisplayItemClientWrapper&);
|
| + void invalidateClient(const DisplayItemClient&);
|
|
|
| #ifndef NDEBUG
|
| WTF::String displayItemListAsDebugString(const DisplayItemList&) const;
|
| @@ -194,7 +195,7 @@ private:
|
|
|
| // Indices into PaintList of all DrawingDisplayItems and BeginSubsequenceDisplayItems of each client.
|
| // Temporarily used during merge to find out-of-order display items.
|
| - using DisplayItemIndicesByClientMap = HashMap<DisplayItemClient, Vector<size_t>>;
|
| + using DisplayItemIndicesByClientMap = HashMap<const DisplayItemClient*, Vector<size_t>>;
|
|
|
| static size_t findMatchingItemFromIndex(const DisplayItem::Id&, const DisplayItemIndicesByClientMap&, const DisplayItemList&);
|
| static void addItemToIndexIfNeeded(const DisplayItem&, size_t index, DisplayItemIndicesByClientMap&);
|
| @@ -224,18 +225,18 @@ private:
|
| // 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<DisplayItemClient> m_validlyCachedClients;
|
| + 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<DisplayItemClient> m_clientsCheckedPaintInvalidation;
|
| + 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.
|
| - HashSet<DisplayItemClient> m_clientsWithPaintOffsetInvalidations;
|
| + HashSet<const DisplayItemClient*> m_clientsWithPaintOffsetInvalidations;
|
| #endif
|
|
|
| // Allow display item construction to be disabled to isolate the costs of construction
|
|
|