Chromium Code Reviews| Index: Source/platform/graphics/paint/SubsequenceRecorder.cpp |
| diff --git a/Source/platform/graphics/paint/SubsequenceRecorder.cpp b/Source/platform/graphics/paint/SubsequenceRecorder.cpp |
| index 4f54dbff0cc2797c37d6c7e5174a82f4f75ef98c..a45358459d5162723b5c56142e90ff2da14d2edf 100644 |
| --- a/Source/platform/graphics/paint/SubsequenceRecorder.cpp |
| +++ b/Source/platform/graphics/paint/SubsequenceRecorder.cpp |
| @@ -33,11 +33,13 @@ bool SubsequenceRecorder::useCachedSubsequenceIfPossible(GraphicsContext& contex |
| SubsequenceRecorder::SubsequenceRecorder(GraphicsContext& context, const DisplayItemClientWrapper& client) |
| : m_displayItemList(context.displayItemList()) |
| , m_client(client) |
| + , m_beginSubsequenceIndex(0) |
| { |
| if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled()) |
| return; |
| ASSERT(m_displayItemList); |
| + m_beginSubsequenceIndex = m_displayItemList->newDisplayItems().size(); |
|
chrishtr
2015/09/08 22:48:00
You only need access to the size, not the whole ve
Xianzhu
2015/09/09 16:50:33
It's also needed to set uncacheable flag or a prev
|
| m_displayItemList->createAndAppend<BeginSubsequenceDisplayItem>(m_client); |
| } |
| @@ -46,9 +48,19 @@ SubsequenceRecorder::~SubsequenceRecorder() |
| if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled()) |
| return; |
| - // Don't remove no-op BeginSubsequence/EndSubsequence pairs because we need to |
| - // match them later with CachedSubsequences. |
| - m_displayItemList->createAndAppend<EndSubsequenceDisplayItem>(m_client); |
| + if (m_displayItemList->lastDisplayItemIsNoopBegin()) |
| + m_displayItemList->removeLastDisplayItem(); |
| + else |
| + m_displayItemList->createAndAppend<EndSubsequenceDisplayItem>(m_client); |
| +} |
| + |
| +void SubsequenceRecorder::setUncacheable() |
| +{ |
| + if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled()) |
| + return; |
| + |
| + ASSERT(m_displayItemList->newDisplayItems()[m_beginSubsequenceIndex].type() == DisplayItem::BeginSubsequence); |
| + m_displayItemList->newDisplayItems()[m_beginSubsequenceIndex].setUncacheable(); |
| } |
| } // namespace blink |