| Index: third_party/WebKit/Source/platform/graphics/paint/ScopedPaintChunkProperties.h
|
| diff --git a/third_party/WebKit/Source/platform/graphics/paint/ScopedPaintChunkProperties.h b/third_party/WebKit/Source/platform/graphics/paint/ScopedPaintChunkProperties.h
|
| index ec105314abfd10f60cde85aa1b90a83bfd0986cc..464f71c693394b5a871ab1312ebbddd00b7e92dc 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/paint/ScopedPaintChunkProperties.h
|
| +++ b/third_party/WebKit/Source/platform/graphics/paint/ScopedPaintChunkProperties.h
|
| @@ -5,6 +5,8 @@
|
| #ifndef ScopedPaintChunkProperties_h
|
| #define ScopedPaintChunkProperties_h
|
|
|
| +#include "platform/graphics/paint/DisplayItem.h"
|
| +#include "platform/graphics/paint/PaintChunk.h"
|
| #include "platform/graphics/paint/PaintChunkProperties.h"
|
| #include "platform/graphics/paint/PaintController.h"
|
| #include "wtf/Allocator.h"
|
| @@ -16,16 +18,27 @@ class ScopedPaintChunkProperties {
|
| DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
|
| WTF_MAKE_NONCOPYABLE(ScopedPaintChunkProperties);
|
| public:
|
| - ScopedPaintChunkProperties(PaintController& paintController, const PaintChunkProperties& properties)
|
| + ScopedPaintChunkProperties(PaintController& paintController, const DisplayItemClient& client, DisplayItem::Type type, const PaintChunkProperties& properties)
|
| : m_paintController(paintController)
|
| , m_previousProperties(paintController.currentPaintChunkProperties())
|
| {
|
| - m_paintController.updateCurrentPaintChunkProperties(properties);
|
| + PaintChunk::Id id(client, type);
|
| + m_paintController.updateCurrentPaintChunkProperties(&id, properties);
|
| }
|
|
|
| + // Omits the type parameter, in case that the client creates only one PaintChunkProperties node during each painting.
|
| + ScopedPaintChunkProperties(PaintController& paintController, const DisplayItemClient& client, const PaintChunkProperties& properties)
|
| + : ScopedPaintChunkProperties(paintController, client, DisplayItem::UninitializedType, properties)
|
| + { }
|
| +
|
| ~ScopedPaintChunkProperties()
|
| {
|
| - m_paintController.updateCurrentPaintChunkProperties(m_previousProperties);
|
| + // We should not return to the previous id, because that may cause a new chunk to use
|
| + // the same id as that of the previous chunk before this ScopedPaintChunkProperties.
|
| + // The painter should create another scope of paint properties with new id, or the
|
| + // new chunk will have no id and will not match any old chunk and will be treated as
|
| + // fully invalidated for rasterization.
|
| + m_paintController.updateCurrentPaintChunkProperties(nullptr, m_previousProperties);
|
| }
|
|
|
| private:
|
|
|