| Index: Source/platform/graphics/paint/ClipRecorder.cpp
|
| diff --git a/Source/platform/graphics/paint/ClipRecorder.cpp b/Source/platform/graphics/paint/ClipRecorder.cpp
|
| index 89471735da5e17201d0753c382e0102209552f18..9dd25b5806f85c4e9791da779e02f3df9399a9dc 100644
|
| --- a/Source/platform/graphics/paint/ClipRecorder.cpp
|
| +++ b/Source/platform/graphics/paint/ClipRecorder.cpp
|
| @@ -12,33 +12,50 @@
|
|
|
| namespace blink {
|
|
|
| -ClipRecorder::ClipRecorder(GraphicsContext& context, const DisplayItemClientWrapper& client, DisplayItem::Type type, const LayoutRect& clipRect, SkRegion::Op operation)
|
| +ClipRecorder::ClipRecorder(GraphicsContext& context, const DisplayItemClientWrapper& client, DisplayItem::Type type)
|
| : m_client(client)
|
| , m_context(context)
|
| , m_type(type)
|
| + , m_engaged(false)
|
| +{
|
| +}
|
| +
|
| +ClipRecorder::ClipRecorder(GraphicsContext& context, const DisplayItemClientWrapper& client, DisplayItem::Type type, const LayoutRect& clipRect, SkRegion::Op operation)
|
| + : ClipRecorder(context, client, type)
|
| {
|
| + begin(clipRect, operation);
|
| +}
|
| +
|
| +ClipRecorder::~ClipRecorder()
|
| +{
|
| + if (!m_engaged)
|
| + return;
|
| +
|
| + DisplayItem::Type endType = DisplayItem::clipTypeToEndClipType(m_type);
|
| if (RuntimeEnabledFeatures::slimmingPaintEnabled()) {
|
| ASSERT(m_context.displayItemList());
|
| if (m_context.displayItemList()->displayItemConstructionIsDisabled())
|
| return;
|
| - m_context.displayItemList()->add(ClipDisplayItem::create(m_client, type, pixelSnappedIntRect(clipRect), operation));
|
| + m_context.displayItemList()->add(EndClipDisplayItem::create(m_client, endType));
|
| } else {
|
| - ClipDisplayItem clipDisplayItem(m_client, type, pixelSnappedIntRect(clipRect), operation);
|
| - clipDisplayItem.replay(m_context);
|
| + EndClipDisplayItem endClipDisplayItem(m_client, endType);
|
| + endClipDisplayItem.replay(m_context);
|
| }
|
| }
|
|
|
| -ClipRecorder::~ClipRecorder()
|
| +void ClipRecorder::begin(const LayoutRect& clipRect, SkRegion::Op operation)
|
| {
|
| - DisplayItem::Type endType = DisplayItem::clipTypeToEndClipType(m_type);
|
| + ASSERT(!m_engaged);
|
| + m_engaged = true;
|
| +
|
| if (RuntimeEnabledFeatures::slimmingPaintEnabled()) {
|
| ASSERT(m_context.displayItemList());
|
| if (m_context.displayItemList()->displayItemConstructionIsDisabled())
|
| return;
|
| - m_context.displayItemList()->add(EndClipDisplayItem::create(m_client, endType));
|
| + m_context.displayItemList()->add(ClipDisplayItem::create(m_client, m_type, pixelSnappedIntRect(clipRect), operation));
|
| } else {
|
| - EndClipDisplayItem endClipDisplayItem(m_client, endType);
|
| - endClipDisplayItem.replay(m_context);
|
| + ClipDisplayItem clipDisplayItem(m_client, m_type, pixelSnappedIntRect(clipRect), operation);
|
| + clipDisplayItem.replay(m_context);
|
| }
|
| }
|
|
|
|
|