Index: Source/core/paint/SubtreeRecorder.cpp |
diff --git a/Source/core/paint/SubtreeRecorder.cpp b/Source/core/paint/SubtreeRecorder.cpp |
index d748e39196b2ec755fa19617c2445772bff6523f..1a79c5af02dd3895ce316c66b40dba6e86599e5a 100644 |
--- a/Source/core/paint/SubtreeRecorder.cpp |
+++ b/Source/core/paint/SubtreeRecorder.cpp |
@@ -17,12 +17,20 @@ 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()) |
return; |
chrishtr
2015/08/11 20:29:15
Bail if phase 2 is not on
Xianzhu
2015/08/11 20:57:33
Done.
|
ASSERT(m_displayItemList); |
+ |
+ // TODO(wangxianzhu): Implement subtree caching. |
+ |
+ if (!m_canUseCache) |
+ m_displayItemList->createAndAppend<BeginSubtreeDisplayItem>(m_subtreeRoot, DisplayItem::paintPhaseToBeginSubtreeType(paintPhase)); |
} |
SubtreeRecorder::~SubtreeRecorder() |
@@ -30,22 +38,21 @@ SubtreeRecorder::~SubtreeRecorder() |
if (!RuntimeEnabledFeatures::slimmingPaintEnabled()) |
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 |