Chromium Code Reviews| Index: Source/core/rendering/svg/RenderSVGShape.cpp |
| diff --git a/Source/core/rendering/svg/RenderSVGShape.cpp b/Source/core/rendering/svg/RenderSVGShape.cpp |
| index ba966d95be3449e7eb0e36b9f6a72cebb94d4431..d18edac4a901d29c365a11c1f030131446b14de9 100644 |
| --- a/Source/core/rendering/svg/RenderSVGShape.cpp |
| +++ b/Source/core/rendering/svg/RenderSVGShape.cpp |
| @@ -123,7 +123,8 @@ void RenderSVGShape::layout() |
| } |
| if (m_needsTransformUpdate) { |
| - m_localTransform = toSVGGraphicsElement(element())->calculateAnimatedLocalTransform(); |
| + SVGGraphicsElement* graphicsElement = toSVGGraphicsElement(element()); |
| + m_localTransform = graphicsElement->hasAnimatedLocalTransform() ? adoptPtr(new AffineTransform(graphicsElement->calculateAnimatedLocalTransform())) : 0; |
|
fs
2014/11/05 13:46:47
It'd be nice to not reallocate the transform for e
f(malita)
2014/11/06 22:16:15
+1 for avoiding unnecessary reallocations. Even if
pdr.
2014/11/07 04:20:27
Agreed and done :)
|
| m_needsTransformUpdate = false; |
| updateCachedBoundariesInParents = true; |
| } |
| @@ -175,7 +176,7 @@ bool RenderSVGShape::nodeAtFloatPoint(const HitTestRequest& request, HitTestResu |
| return false; |
| FloatPoint localPoint; |
| - if (!SVGRenderSupport::transformToUserSpaceAndCheckClipping(this, m_localTransform, pointInParent, localPoint)) |
| + if (!SVGRenderSupport::transformToUserSpaceAndCheckClipping(this, localToParentTransform(), pointInParent, localPoint)) |
| return false; |
| PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_GEOMETRY_HITTESTING, request, style()->pointerEvents()); |