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

Reply via email to