| Index: Source/WebCore/rendering/svg/SVGRenderSupport.cpp
|
| ===================================================================
|
| --- Source/WebCore/rendering/svg/SVGRenderSupport.cpp (revision 106008)
|
| +++ Source/WebCore/rendering/svg/SVGRenderSupport.cpp (working copy)
|
| @@ -87,8 +87,12 @@
|
| const SVGRenderStyle* svgStyle = style->svgStyle();
|
| ASSERT(svgStyle);
|
|
|
| + bool isRenderingMask = false;
|
| + if (object->frame() && object->frame()->view())
|
| + isRenderingMask = object->frame()->view()->paintBehavior() & PaintBehaviorRenderingSVGMask;
|
| +
|
| // Setup transparency layers before setting up SVG resources!
|
| - float opacity = style->opacity();
|
| + float opacity = isRenderingMask ? 1 : style->opacity();
|
| const ShadowData* shadow = svgStyle->shadow();
|
| if (opacity < 1 || shadow) {
|
| FloatRect repaintRect = object->repaintRectInLocalCoordinates();
|
| @@ -114,9 +118,11 @@
|
| return true;
|
| }
|
|
|
| - if (RenderSVGResourceMasker* masker = resources->masker()) {
|
| - if (!masker->applyResource(object, style, paintInfo.context, ApplyToDefaultMode))
|
| - return false;
|
| + if (!isRenderingMask) {
|
| + if (RenderSVGResourceMasker* masker = resources->masker()) {
|
| + if (!masker->applyResource(object, style, paintInfo.context, ApplyToDefaultMode))
|
| + return false;
|
| + }
|
| }
|
|
|
| if (RenderSVGResourceClipper* clipper = resources->clipper()) {
|
| @@ -125,9 +131,11 @@
|
| }
|
|
|
| #if ENABLE(FILTERS)
|
| - if (RenderSVGResourceFilter* filter = resources->filter()) {
|
| - if (!filter->applyResource(object, style, paintInfo.context, ApplyToDefaultMode))
|
| - return false;
|
| + if (!isRenderingMask) {
|
| + if (RenderSVGResourceFilter* filter = resources->filter()) {
|
| + if (!filter->applyResource(object, style, paintInfo.context, ApplyToDefaultMode))
|
| + return false;
|
| + }
|
| }
|
| #endif
|
|
|
|
|