Chromium Code Reviews| Index: Source/core/rendering/RenderObject.cpp |
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
| index 2cea782a9b30defcba4131c2e25ffe0314ec35e3..8a728499ca4e6cc8dc653777ef05f0fbdc43fc06 100644 |
| --- a/Source/core/rendering/RenderObject.cpp |
| +++ b/Source/core/rendering/RenderObject.cpp |
| @@ -84,6 +84,7 @@ |
| #include "platform/TraceEvent.h" |
| #include "platform/TracedValue.h" |
| #include "platform/geometry/TransformState.h" |
| +#include "platform/graphics/FirstPaintInvalidationTracking.h" |
| #include "platform/graphics/GraphicsContext.h" |
| #include "wtf/RefCountedLeakCounter.h" |
| #include "wtf/text/StringBuilder.h" |
| @@ -99,6 +100,13 @@ namespace { |
| static bool gModifyRenderTreeStructureAnyState = false; |
| +typedef WillBeHeapHashSet<RawPtrWillBeWeakMember<const RenderObject> > RenderObjectWeakSet; |
| +RenderObjectWeakSet& renderObjectNeverHadPaintInvalidationSet() |
| +{ |
| + DEFINE_STATIC_LOCAL(RenderObjectWeakSet, set, ()); |
|
tkent
2014/09/10 00:03:27
This set doesn't look traceable. Needs Persistent
kouhei (in TOK)
2014/09/10 23:46:28
Done.
|
| + return set; |
| +} |
| + |
| } // namespace |
| using namespace HTMLNames; |
| @@ -233,6 +241,9 @@ RenderObject::RenderObject(Node* node) |
| #endif |
| , m_bitfields(node) |
| { |
| + if (firstPaintInvalidationTrackingEnabled()) |
| + renderObjectNeverHadPaintInvalidationSet().add(this); |
| + |
| #ifndef NDEBUG |
| renderObjectCounter.increment(); |
| #endif |
| @@ -241,6 +252,9 @@ RenderObject::RenderObject(Node* node) |
| RenderObject::~RenderObject() |
| { |
| + if (firstPaintInvalidationTrackingEnabled()) |
| + renderObjectNeverHadPaintInvalidationSet().remove(this); |
| + |
| ASSERT(!m_hasAXObject); |
| #if ENABLE(OILPAN) |
| ASSERT(m_didCallDestroy); |
| @@ -1409,6 +1423,20 @@ void RenderObject::paint(PaintInfo&, const LayoutPoint&) |
| { |
| } |
| +void RenderObject::setHadPaintInvalidation() |
| +{ |
| + if (firstPaintInvalidationTrackingEnabled()) |
| + renderObjectNeverHadPaintInvalidationSet().remove(this); |
| +} |
| + |
| +bool RenderObject::hadPaintInvalidation() const |
| +{ |
| + if (!firstPaintInvalidationTrackingEnabled()) |
| + return true; |
| + |
| + return !renderObjectNeverHadPaintInvalidationSet().contains(this); |
| +} |
| + |
| const RenderLayerModelObject* RenderObject::containerForPaintInvalidation() const |
| { |
| if (!isRooted()) |