| Index: Source/core/rendering/RenderObject.cpp
|
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp
|
| index 4eba5889a3cc81b31d6948153f0f1533cd44c166..e77dc03fabd602a85a4931310e0d7bfba3203c2d 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(OwnPtrWillBePersistent<RenderObjectWeakSet>, set, (adoptPtrWillBeNoop(new RenderObjectWeakSet())));
|
| + 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);
|
| @@ -1410,6 +1424,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())
|
|
|