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()); |