| Index: Source/core/paint/SubtreeRecorder.cpp
|
| diff --git a/Source/core/paint/SubtreeRecorder.cpp b/Source/core/paint/SubtreeRecorder.cpp
|
| index d748e39196b2ec755fa19617c2445772bff6523f..f9ec65e5f3801cbec096cb99a4a342285d2b6947 100644
|
| --- a/Source/core/paint/SubtreeRecorder.cpp
|
| +++ b/Source/core/paint/SubtreeRecorder.cpp
|
| @@ -17,35 +17,42 @@ SubtreeRecorder::SubtreeRecorder(GraphicsContext& context, const LayoutObject& s
|
| : m_displayItemList(context.displayItemList())
|
| , m_subtreeRoot(subtreeRoot)
|
| , m_paintPhase(paintPhase)
|
| - , m_begun(false)
|
| + , m_canUseCache(false)
|
| +#if ENABLE(ASSERT)
|
| + , m_checkedCanUseCache(false)
|
| +#endif
|
| {
|
| - if (!RuntimeEnabledFeatures::slimmingPaintEnabled())
|
| + if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled())
|
| return;
|
|
|
| ASSERT(m_displayItemList);
|
| +
|
| + // TODO(wangxianzhu): Implement subtree caching.
|
| +
|
| + if (!m_canUseCache)
|
| + m_displayItemList->createAndAppend<BeginSubtreeDisplayItem>(m_subtreeRoot, DisplayItem::paintPhaseToBeginSubtreeType(paintPhase));
|
| }
|
|
|
| SubtreeRecorder::~SubtreeRecorder()
|
| {
|
| - if (!RuntimeEnabledFeatures::slimmingPaintEnabled())
|
| + if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled())
|
| return;
|
|
|
| - if (m_begun) {
|
| - if (m_displayItemList->lastDisplayItemIsNoopBegin())
|
| - m_displayItemList->removeLastDisplayItem();
|
| - else
|
| - m_displayItemList->createAndAppend<EndSubtreeDisplayItem>(m_subtreeRoot, DisplayItem::paintPhaseToEndSubtreeType(m_paintPhase));
|
| - }
|
| + ASSERT(m_checkedCanUseCache);
|
| + if (m_canUseCache)
|
| + m_displayItemList->createAndAppend<SubtreeCachedDisplayItem>(m_subtreeRoot, DisplayItem::paintPhaseToSubtreeCachedType(m_paintPhase));
|
| + else if (m_displayItemList->lastDisplayItemIsNoopBegin())
|
| + m_displayItemList->removeLastDisplayItem();
|
| + else
|
| + m_displayItemList->createAndAppend<EndSubtreeDisplayItem>(m_subtreeRoot, DisplayItem::paintPhaseToEndSubtreeType(m_paintPhase));
|
| }
|
|
|
| -void SubtreeRecorder::begin()
|
| +bool SubtreeRecorder::canUseCache() const
|
| {
|
| - if (!RuntimeEnabledFeatures::slimmingPaintEnabled())
|
| - return;
|
| - if (m_displayItemList->displayItemConstructionIsDisabled())
|
| - return;
|
| - m_displayItemList->createAndAppend<BeginSubtreeDisplayItem>(m_subtreeRoot, DisplayItem::paintPhaseToBeginSubtreeType(m_paintPhase));
|
| - m_begun = true;
|
| +#if ENABLE(ASSERT)
|
| + m_checkedCanUseCache = true;
|
| +#endif
|
| + return m_canUseCache;
|
| }
|
|
|
| } // namespace blink
|
|
|