| 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 e3dc42b883a6c58de348012f02eefe01a20808d0..f076a8c606334772f77382089761c041fede8fad 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
|
| +++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
|
| @@ -63,7 +63,11 @@ public:
|
|
|
| PaintInvalidationReason getPaintInvalidationReason() const { return m_cacheGenerationOrInvalidationReason.getPaintInvalidationReason(); }
|
|
|
| + // A client is considered "just created" if its display items have never been committed.
|
| + bool isJustCreated() const { return m_cacheGenerationOrInvalidationReason.isJustCreated(); }
|
| +
|
| private:
|
| + friend class FakeDisplayItemClient;
|
| friend class PaintController;
|
|
|
| // Holds a unique cache generation id of DisplayItemClients and PaintControllers,
|
| @@ -81,12 +85,16 @@ private:
|
| // only. The client will be treated as invalid on other paint controllers regardless if
|
| // it's validly cached by these paint controllers. The situation is very rare (about 0.07%
|
| // clients were painted on multiple paint controllers) so the performance penalty is trivial.
|
| - class CacheGenerationOrInvalidationReason {
|
| + class PLATFORM_EXPORT CacheGenerationOrInvalidationReason {
|
| DISALLOW_NEW();
|
| public:
|
| - CacheGenerationOrInvalidationReason() { invalidate(); }
|
| + CacheGenerationOrInvalidationReason() : m_value(kJustCreated) { }
|
|
|
| - void invalidate(PaintInvalidationReason reason = PaintInvalidationFull) { m_value = static_cast<ValueType>(reason); }
|
| + void invalidate(PaintInvalidationReason reason = PaintInvalidationFull)
|
| + {
|
| + if (m_value != kJustCreated)
|
| + m_value = static_cast<ValueType>(reason);
|
| + }
|
|
|
| static CacheGenerationOrInvalidationReason next()
|
| {
|
| @@ -103,14 +111,17 @@ private:
|
|
|
| PaintInvalidationReason getPaintInvalidationReason() const
|
| {
|
| - return m_value < kFirstValidGeneration ? static_cast<PaintInvalidationReason>(m_value) : PaintInvalidationNone;
|
| + return m_value < kJustCreated ? static_cast<PaintInvalidationReason>(m_value) : PaintInvalidationNone;
|
| }
|
|
|
| + bool isJustCreated() const { return m_value == kJustCreated; }
|
| +
|
| private:
|
| typedef uint32_t ValueType;
|
| explicit CacheGenerationOrInvalidationReason(ValueType value) : m_value(value) { }
|
|
|
| - static const ValueType kFirstValidGeneration = static_cast<ValueType>(PaintInvalidationReasonMax) + 1;
|
| + static const ValueType kJustCreated = static_cast<ValueType>(PaintInvalidationReasonMax) + 1;
|
| + static const ValueType kFirstValidGeneration = static_cast<ValueType>(PaintInvalidationReasonMax) + 2;
|
| static ValueType s_nextGeneration;
|
| ValueType m_value;
|
| };
|
|
|