Index: Source/core/paint/BlockPainter.cpp |
diff --git a/Source/core/paint/BlockPainter.cpp b/Source/core/paint/BlockPainter.cpp |
index fa3bd8fdc40e0f87b703d8c4106853eab75b144f..7e38f20f45d8223a1dd554ac18c686e4adbddf35 100644 |
--- a/Source/core/paint/BlockPainter.cpp |
+++ b/Source/core/paint/BlockPainter.cpp |
@@ -22,29 +22,14 @@ |
#include "core/paint/ScopeRecorder.h" |
#include "core/paint/ScrollRecorder.h" |
#include "core/paint/ScrollableAreaPainter.h" |
+#include "core/paint/SubtreeRecorder.h" |
chrishtr
2015/08/25 20:49:52
This file is missing from the CL?
|
#include "platform/graphics/paint/ClipRecorder.h" |
-#include "platform/graphics/paint/SubtreeRecorder.h" |
#include "wtf/Optional.h" |
namespace blink { |
-// We need to balance the benefit of subtree optimization and the cost of subtree display items. |
-// Only output subtree information if the block has multiple children or multiple line boxes. |
-static bool needsSubtreeRecorder(const LayoutBlock& layoutBlock) |
-{ |
- return (layoutBlock.firstChild() && layoutBlock.firstChild()->nextSibling()) |
- || (layoutBlock.isLayoutBlockFlow() && toLayoutBlockFlow(layoutBlock).firstLineBox() && toLayoutBlockFlow(layoutBlock).firstLineBox()->nextLineBox()); |
-} |
- |
void BlockPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
{ |
- Optional<SubtreeRecorder> subtreeRecorder; |
- if (needsSubtreeRecorder(m_layoutBlock)) { |
- subtreeRecorder.emplace(*paintInfo.context, m_layoutBlock, paintInfo.phase); |
- if (subtreeRecorder->canUseCache()) |
- return; |
- } |
- |
PaintInfo localPaintInfo(paintInfo); |
LayoutPoint adjustedPaintOffset = paintOffset + m_layoutBlock.location(); |
@@ -58,6 +43,10 @@ void BlockPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOff |
if (!overflowBox.intersects(LayoutRect(localPaintInfo.rect))) |
return; |
+ SubtreeRecorder subtreeRecorder(*paintInfo.context, m_layoutBlock, paintInfo.phase); |
+ if (subtreeRecorder.canUseCache()) |
+ return; |
+ |
// There are some cases where not all clipped visual overflow is accounted for. |
// FIXME: reduce the number of such cases. |
ContentsClipBehavior contentsClipBehavior = ForceContentsClip; |