Title: [169368] trunk/Source/WebCore
- Revision
- 169368
- Author
- [email protected]
- Date
- 2014-05-26 22:23:57 -0700 (Mon, 26 May 2014)
Log Message
Remove special case for transparent SVG root layers
https://bugs.webkit.org/show_bug.cgi?id=116856
Reviewed by Dirk Schulze.
This patch removes a special case from RenderLayer for root SVG layers
with opacity. Instead of checking whether a composited layer exists in
SVGRenderingContext::prepareToRenderSVGContent we now exclude the root
SVG renderobject from the opacity checks in prepareToRenderSVGContent.
This is a merge of https://src.chromium.org/viewvc/blink?view=rev&revision=174102
by Philip Rogers <[email protected]>.
No new tests as this is covered by svg/custom/composited-svg-with-opacity.html.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::isTransparent): Deleted.
* rendering/RenderLayer.h:
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::prepareToRenderSVGContent):
The opacity case for root svg renderers is now handled by
RenderLayer.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (169367 => 169368)
--- trunk/Source/WebCore/ChangeLog 2014-05-27 04:52:36 UTC (rev 169367)
+++ trunk/Source/WebCore/ChangeLog 2014-05-27 05:23:57 UTC (rev 169368)
@@ -1,3 +1,28 @@
+2014-05-26 Philip Rogers <[email protected]>
+
+ Remove special case for transparent SVG root layers
+ https://bugs.webkit.org/show_bug.cgi?id=116856
+
+ Reviewed by Dirk Schulze.
+
+ This patch removes a special case from RenderLayer for root SVG layers
+ with opacity. Instead of checking whether a composited layer exists in
+ SVGRenderingContext::prepareToRenderSVGContent we now exclude the root
+ SVG renderobject from the opacity checks in prepareToRenderSVGContent.
+
+ This is a merge of https://src.chromium.org/viewvc/blink?view=rev&revision=174102
+ by Philip Rogers <[email protected]>.
+
+ No new tests as this is covered by svg/custom/composited-svg-with-opacity.html.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::isTransparent): Deleted.
+ * rendering/RenderLayer.h:
+ * rendering/svg/SVGRenderingContext.cpp:
+ (WebCore::SVGRenderingContext::prepareToRenderSVGContent):
+ The opacity case for root svg renderers is now handled by
+ RenderLayer.
+
2014-05-26 Yusuke Suzuki <[email protected]>
CSS JIT: Fix build error raised when CSS_SELECTOR_JIT_DEBUGGING is 1
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (169367 => 169368)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2014-05-27 04:52:36 UTC (rev 169367)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2014-05-27 05:23:57 UTC (rev 169368)
@@ -1534,13 +1534,6 @@
return parent()->cannotBlitToWindow();
}
-bool RenderLayer::isTransparent() const
-{
- if (renderer().element() && renderer().element()->isSVGElement())
- return false;
- return renderer().isTransparent() || renderer().hasMask();
-}
-
RenderLayer* RenderLayer::transparentPaintingAncestor()
{
if (isComposited())
Modified: trunk/Source/WebCore/rendering/RenderLayer.h (169367 => 169368)
--- trunk/Source/WebCore/rendering/RenderLayer.h 2014-05-27 04:52:36 UTC (rev 169367)
+++ trunk/Source/WebCore/rendering/RenderLayer.h 2014-05-27 05:23:57 UTC (rev 169368)
@@ -376,7 +376,7 @@
bool cannotBlitToWindow() const;
- bool isTransparent() const;
+ bool isTransparent() const { return renderer().isTransparent() || renderer().hasMask(); }
RenderLayer* transparentPaintingAncestor();
void beginTransparencyLayers(GraphicsContext*, const RenderLayer* rootLayer, const LayoutRect& paintDirtyRect, PaintBehavior);
Modified: trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp (169367 => 169368)
--- trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp 2014-05-27 04:52:36 UTC (rev 169367)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp 2014-05-27 05:23:57 UTC (rev 169368)
@@ -101,7 +101,8 @@
// Setup transparency layers before setting up SVG resources!
bool isRenderingMask = isRenderingMaskImage(*m_renderer);
- float opacity = isRenderingMask || (renderer.hasLayer() && toRenderLayerModelObject(renderer).layer()->isComposited()) ? 1 : style.opacity();
+ // RenderLayer takes care of root opacity.
+ float opacity = (renderer.isSVGRoot() || isRenderingMask) ? 1 : style.opacity();
const ShadowData* shadow = svgStyle.shadow();
bool hasBlendMode = style.hasBlendMode();
bool hasIsolation = style.hasIsolation();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes