Index: Source/core/paint/BoxPainter.cpp |
diff --git a/Source/core/paint/BoxPainter.cpp b/Source/core/paint/BoxPainter.cpp |
index 99926941043325b46783c8d48194132fb2eb90e7..152cb6cc691fe1f2aec53d1e0f06ff40e6458c91 100644 |
--- a/Source/core/paint/BoxPainter.cpp |
+++ b/Source/core/paint/BoxPainter.cpp |
@@ -11,7 +11,6 @@ |
#include "core/paint/BackgroundImageGeometry.h" |
#include "core/paint/BoxDecorationData.h" |
#include "core/paint/DrawingRecorder.h" |
-#include "core/paint/TransparencyDisplayItem.h" |
#include "core/rendering/ImageQualityController.h" |
#include "core/rendering/PaintInfo.h" |
#include "core/rendering/RenderBox.h" |
@@ -516,7 +515,7 @@ |
void BoxPainter::paintMaskImages(const PaintInfo& paintInfo, const LayoutRect& paintRect) |
{ |
// Figure out if we need to push a transparency layer to render our mask. |
- OwnPtr<TransparencyRecorder> transparencyRecorder; |
+ bool pushTransparencyLayer = false; |
bool compositedMask = m_renderBox.hasLayer() && m_renderBox.layer()->hasCompositedMask(); |
bool flattenCompositingLayers = m_renderBox.view()->frameView() && m_renderBox.view()->frameView()->paintBehavior() & PaintBehaviorFlattenCompositingLayers; |
CompositeOperator compositeOp = CompositeSourceOver; |
@@ -524,6 +523,7 @@ |
bool allMaskImagesLoaded = true; |
if (!compositedMask || flattenCompositingLayers) { |
+ pushTransparencyLayer = true; |
StyleImage* maskBoxImage = m_renderBox.style()->maskBoxImage().image(); |
const FillLayer& maskLayers = m_renderBox.style()->maskLayers(); |
@@ -534,9 +534,7 @@ |
allMaskImagesLoaded &= maskLayers.imagesAreLoaded(); |
paintInfo.context->setCompositeOperation(CompositeDestinationIn); |
- |
- transparencyRecorder = adoptPtr(new TransparencyRecorder(paintInfo.context, &m_renderBox, DisplayItem::BeginTransparency, WebBlendModeNormal, 1)); |
- |
+ paintInfo.context->beginTransparencyLayer(1); |
compositeOp = CompositeSourceOver; |
} |
@@ -544,6 +542,9 @@ |
paintFillLayers(paintInfo, Color::transparent, m_renderBox.style()->maskLayers(), paintRect, BackgroundBleedNone, compositeOp); |
paintNinePieceImage(m_renderBox, paintInfo.context, paintRect, m_renderBox.style(), m_renderBox.style()->maskBoxImage(), compositeOp); |
} |
+ |
+ if (pushTransparencyLayer) |
+ paintInfo.context->endLayer(); |
} |
void BoxPainter::paintClippingMask(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) |