<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[179548] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/179548">179548</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2015-02-03 08:58:08 -0800 (Tue, 03 Feb 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Move InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance
https://bugs.webkit.org/show_bug.cgi?id=141148
Reviewed by Brent Fulgham.
Inspired by this change Rob Buis made in Blink:
http://src.chromium.org/viewvc/blink?view=revision&revision=173343
I actually wrote the whole thing and then discovered we did it almost identically.
* svg/SVGAnimatedTypeAnimator.cpp:
(WebCore::SVGElementAnimatedPropertyList::setInstanceUpdatesBlocked): Added this
helper function to get around a circular header dependency.
* svg/SVGAnimatedTypeAnimator.h:
(WebCore::SVGAnimatedTypeAnimator::executeAction): Use setInstanceUpdatesBlocked.
* svg/SVGElement.cpp:
(WebCore::SVGElement::removedFrom): Use invalidateInstances.
(WebCore::SVGElement::finishParsingChildren): Ditto.
(WebCore::SVGElement::svgAttributeChanged): Ditto.
(WebCore::SVGElement::childrenChanged): Ditto.
(WebCore::SVGElement::setInstanceUpdatesBlocked): Added an assertion that will
catch anyone who nests InstanceUpdateBlocker by accident.
(WebCore::SVGElement::invalidateInstances): Moved this here from
SVGElementInstance::invalidateAllInstancesOfElement. I had already modified this
so it had nothing to do with SVGElementInstance, so it was a simple matter of
converting this into a member function. Added a FIXME about the mysterious
updateStyleIfNeeded that makes multiple tests fail if it's removed.
* svg/SVGElement.h: Added public InstanceUpdateBlocker class, protected
InstanceInvalidationGuard class, and private invalidateInstances function.
Unlike the ones in SVGElementInstance these use references so they are then
not copyable without using the WTF_MAKE_NONCOPYABLE macro.
* svg/SVGElementInstance.cpp:
(WebCore::SVGElementInstance::invalidateAllInstancesOfElement): Deleted.
(WebCore::SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker): Deleted.
(WebCore::SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker): Deleted.
* svg/SVGElementInstance.h: Removed InvalidationGuard, InstanceUpdateBlocker, and
invalidateAllInstancesOfElement. Didn't do any further cleanup since we soon will
delete this entire file.
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::svgAttributeChanged): Updated to use new name and reference
instead of pointer.
* svg/SVGAnimateElementBase.cpp:
(WebCore::applyCSSPropertyToTargetAndInstances): Ditto.
(WebCore::removeCSSPropertyFromTargetAndInstances): Ditto.
(WebCore::notifyTargetAndInstancesAboutAnimValChange): Ditto.
* svg/SVGAnimatedPath.cpp:
(WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): Ditto.
* svg/SVGCircleElement.cpp:
(WebCore::SVGCircleElement::svgAttributeChanged): Ditto.
* svg/SVGClipPathElement.cpp:
(WebCore::SVGClipPathElement::svgAttributeChanged): Ditto.
* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged): Ditto.
* svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::svgAttributeChanged): Ditto.
* svg/SVGEllipseElement.cpp:
(WebCore::SVGEllipseElement::svgAttributeChanged): Ditto.
* svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::svgAttributeChanged): Ditto.
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Ditto.
* svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::svgAttributeChanged): Ditto.
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Ditto.
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Ditto.
* svg/SVGFEDisplacementMapElement.cpp:
(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Ditto.
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::svgAttributeChanged): Ditto.
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Ditto.
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::svgAttributeChanged): Ditto.
* svg/SVGFELightElement.cpp:
(WebCore::SVGFELightElement::svgAttributeChanged): Ditto.
* svg/SVGFEMergeNodeElement.cpp:
(WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Ditto.
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::svgAttributeChanged): Ditto.
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::svgAttributeChanged): Ditto.
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Ditto.
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::svgAttributeChanged): Ditto.
* svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::svgAttributeChanged): Ditto.
* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::svgAttributeChanged): Ditto.
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged): Ditto.
* svg/SVGForeignObjectElement.cpp:
(WebCore::SVGForeignObjectElement::svgAttributeChanged): Ditto.
* svg/SVGGElement.cpp:
(WebCore::SVGGElement::svgAttributeChanged): Ditto.
* svg/SVGGradientElement.cpp:
(WebCore::SVGGradientElement::svgAttributeChanged): Ditto.
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::svgAttributeChanged): Ditto.
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::svgAttributeChanged): Ditto.
* svg/SVGLineElement.cpp:
(WebCore::SVGLineElement::svgAttributeChanged): Ditto.
* svg/SVGLinearGradientElement.cpp:
(WebCore::SVGLinearGradientElement::svgAttributeChanged): Ditto.
* svg/SVGMPathElement.cpp:
(WebCore::SVGMPathElement::svgAttributeChanged): Ditto.
* svg/SVGMarkerElement.cpp:
(WebCore::SVGMarkerElement::svgAttributeChanged): Ditto.
* svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::svgAttributeChanged): Ditto.
* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::svgAttributeChanged): Ditto.
* svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::svgAttributeChanged): Ditto.
* svg/SVGPolyElement.cpp:
(WebCore::SVGPolyElement::svgAttributeChanged): Ditto.
* svg/SVGRadialGradientElement.cpp:
(WebCore::SVGRadialGradientElement::svgAttributeChanged): Ditto.
* svg/SVGRectElement.cpp:
(WebCore::SVGRectElement::svgAttributeChanged): Ditto.
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::svgAttributeChanged): Ditto.
* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::svgAttributeChanged): Ditto.
* svg/SVGStopElement.cpp:
(WebCore::SVGStopElement::svgAttributeChanged): Ditto.
* svg/SVGSymbolElement.cpp:
(WebCore::SVGSymbolElement::svgAttributeChanged): Ditto.
* svg/SVGTRefElement.cpp:
(WebCore::SVGTRefElement::svgAttributeChanged): Ditto.
* svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::svgAttributeChanged): Ditto.
* svg/SVGTextPathElement.cpp:
(WebCore::SVGTextPathElement::svgAttributeChanged): Ditto.
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::svgAttributeChanged): Ditto.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::svgAttributeChanged): Ditto.
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::svgAttributeChanged): Ditto.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAElementcpp">trunk/Source/WebCore/svg/SVGAElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimateElementBasecpp">trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedPathcpp">trunk/Source/WebCore/svg/SVGAnimatedPath.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedTypeAnimatorcpp">trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimatedTypeAnimatorh">trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCircleElementcpp">trunk/Source/WebCore/svg/SVGCircleElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGClipPathElementcpp">trunk/Source/WebCore/svg/SVGClipPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGComponentTransferFunctionElementcpp">trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCursorElementcpp">trunk/Source/WebCore/svg/SVGCursorElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementcpp">trunk/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementh">trunk/Source/WebCore/svg/SVGElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementInstancecpp">trunk/Source/WebCore/svg/SVGElementInstance.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementInstanceh">trunk/Source/WebCore/svg/SVGElementInstance.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGEllipseElementcpp">trunk/Source/WebCore/svg/SVGEllipseElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEBlendElementcpp">trunk/Source/WebCore/svg/SVGFEBlendElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEColorMatrixElementcpp">trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFECompositeElementcpp">trunk/Source/WebCore/svg/SVGFECompositeElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEConvolveMatrixElementcpp">trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDiffuseLightingElementcpp">trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDisplacementMapElementcpp">trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDropShadowElementcpp">trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEGaussianBlurElementcpp">trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEImageElementcpp">trunk/Source/WebCore/svg/SVGFEImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFELightElementcpp">trunk/Source/WebCore/svg/SVGFELightElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMergeNodeElementcpp">trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMorphologyElementcpp">trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEOffsetElementcpp">trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFESpecularLightingElementcpp">trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETileElementcpp">trunk/Source/WebCore/svg/SVGFETileElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETurbulenceElementcpp">trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFilterElementcpp">trunk/Source/WebCore/svg/SVGFilterElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFilterPrimitiveStandardAttributescpp">trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGForeignObjectElementcpp">trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGElementcpp">trunk/Source/WebCore/svg/SVGGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGradientElementcpp">trunk/Source/WebCore/svg/SVGGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGraphicsElementcpp">trunk/Source/WebCore/svg/SVGGraphicsElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGImageElementcpp">trunk/Source/WebCore/svg/SVGImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLineElementcpp">trunk/Source/WebCore/svg/SVGLineElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLinearGradientElementcpp">trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMPathElementcpp">trunk/Source/WebCore/svg/SVGMPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMarkerElementcpp">trunk/Source/WebCore/svg/SVGMarkerElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMaskElementcpp">trunk/Source/WebCore/svg/SVGMaskElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPathElementcpp">trunk/Source/WebCore/svg/SVGPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPatternElementcpp">trunk/Source/WebCore/svg/SVGPatternElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPolyElementcpp">trunk/Source/WebCore/svg/SVGPolyElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGRadialGradientElementcpp">trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGRectElementcpp">trunk/Source/WebCore/svg/SVGRectElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSVGElementcpp">trunk/Source/WebCore/svg/SVGSVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGScriptElementcpp">trunk/Source/WebCore/svg/SVGScriptElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGStopElementcpp">trunk/Source/WebCore/svg/SVGStopElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSymbolElementcpp">trunk/Source/WebCore/svg/SVGSymbolElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTRefElementcpp">trunk/Source/WebCore/svg/SVGTRefElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextContentElementcpp">trunk/Source/WebCore/svg/SVGTextContentElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPathElementcpp">trunk/Source/WebCore/svg/SVGTextPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPositioningElementcpp">trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGUseElementcpp">trunk/Source/WebCore/svg/SVGUseElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvganimationSVGSMILElementcpp">trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/ChangeLog        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -1,3 +1,154 @@
</span><ins>+2015-02-03 Darin Adler <darin@apple.com>
+
+ Move InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance
+ https://bugs.webkit.org/show_bug.cgi?id=141148
+
+ Reviewed by Brent Fulgham.
+
+ Inspired by this change Rob Buis made in Blink:
+
+ http://src.chromium.org/viewvc/blink?view=revision&revision=173343
+
+ I actually wrote the whole thing and then discovered we did it almost identically.
+
+ * svg/SVGAnimatedTypeAnimator.cpp:
+ (WebCore::SVGElementAnimatedPropertyList::setInstanceUpdatesBlocked): Added this
+ helper function to get around a circular header dependency.
+ * svg/SVGAnimatedTypeAnimator.h:
+ (WebCore::SVGAnimatedTypeAnimator::executeAction): Use setInstanceUpdatesBlocked.
+
+ * svg/SVGElement.cpp:
+ (WebCore::SVGElement::removedFrom): Use invalidateInstances.
+ (WebCore::SVGElement::finishParsingChildren): Ditto.
+ (WebCore::SVGElement::svgAttributeChanged): Ditto.
+ (WebCore::SVGElement::childrenChanged): Ditto.
+ (WebCore::SVGElement::setInstanceUpdatesBlocked): Added an assertion that will
+ catch anyone who nests InstanceUpdateBlocker by accident.
+ (WebCore::SVGElement::invalidateInstances): Moved this here from
+ SVGElementInstance::invalidateAllInstancesOfElement. I had already modified this
+ so it had nothing to do with SVGElementInstance, so it was a simple matter of
+ converting this into a member function. Added a FIXME about the mysterious
+ updateStyleIfNeeded that makes multiple tests fail if it's removed.
+
+ * svg/SVGElement.h: Added public InstanceUpdateBlocker class, protected
+ InstanceInvalidationGuard class, and private invalidateInstances function.
+ Unlike the ones in SVGElementInstance these use references so they are then
+ not copyable without using the WTF_MAKE_NONCOPYABLE macro.
+
+ * svg/SVGElementInstance.cpp:
+ (WebCore::SVGElementInstance::invalidateAllInstancesOfElement): Deleted.
+ (WebCore::SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker): Deleted.
+ (WebCore::SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker): Deleted.
+ * svg/SVGElementInstance.h: Removed InvalidationGuard, InstanceUpdateBlocker, and
+ invalidateAllInstancesOfElement. Didn't do any further cleanup since we soon will
+ delete this entire file.
+
+ * svg/SVGAElement.cpp:
+ (WebCore::SVGAElement::svgAttributeChanged): Updated to use new name and reference
+ instead of pointer.
+ * svg/SVGAnimateElementBase.cpp:
+ (WebCore::applyCSSPropertyToTargetAndInstances): Ditto.
+ (WebCore::removeCSSPropertyFromTargetAndInstances): Ditto.
+ (WebCore::notifyTargetAndInstancesAboutAnimValChange): Ditto.
+ * svg/SVGAnimatedPath.cpp:
+ (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): Ditto.
+ * svg/SVGCircleElement.cpp:
+ (WebCore::SVGCircleElement::svgAttributeChanged): Ditto.
+ * svg/SVGClipPathElement.cpp:
+ (WebCore::SVGClipPathElement::svgAttributeChanged): Ditto.
+ * svg/SVGComponentTransferFunctionElement.cpp:
+ (WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged): Ditto.
+ * svg/SVGCursorElement.cpp:
+ (WebCore::SVGCursorElement::svgAttributeChanged): Ditto.
+ * svg/SVGEllipseElement.cpp:
+ (WebCore::SVGEllipseElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEBlendElement.cpp:
+ (WebCore::SVGFEBlendElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEColorMatrixElement.cpp:
+ (WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Ditto.
+ * svg/SVGFECompositeElement.cpp:
+ (WebCore::SVGFECompositeElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEConvolveMatrixElement.cpp:
+ (WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEDiffuseLightingElement.cpp:
+ (WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEDisplacementMapElement.cpp:
+ (WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEDropShadowElement.cpp:
+ (WebCore::SVGFEDropShadowElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEGaussianBlurElement.cpp:
+ (WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEImageElement.cpp:
+ (WebCore::SVGFEImageElement::svgAttributeChanged): Ditto.
+ * svg/SVGFELightElement.cpp:
+ (WebCore::SVGFELightElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEMergeNodeElement.cpp:
+ (WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEMorphologyElement.cpp:
+ (WebCore::SVGFEMorphologyElement::svgAttributeChanged): Ditto.
+ * svg/SVGFEOffsetElement.cpp:
+ (WebCore::SVGFEOffsetElement::svgAttributeChanged): Ditto.
+ * svg/SVGFESpecularLightingElement.cpp:
+ (WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Ditto.
+ * svg/SVGFETileElement.cpp:
+ (WebCore::SVGFETileElement::svgAttributeChanged): Ditto.
+ * svg/SVGFETurbulenceElement.cpp:
+ (WebCore::SVGFETurbulenceElement::svgAttributeChanged): Ditto.
+ * svg/SVGFilterElement.cpp:
+ (WebCore::SVGFilterElement::svgAttributeChanged): Ditto.
+ * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+ (WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged): Ditto.
+ * svg/SVGForeignObjectElement.cpp:
+ (WebCore::SVGForeignObjectElement::svgAttributeChanged): Ditto.
+ * svg/SVGGElement.cpp:
+ (WebCore::SVGGElement::svgAttributeChanged): Ditto.
+ * svg/SVGGradientElement.cpp:
+ (WebCore::SVGGradientElement::svgAttributeChanged): Ditto.
+ * svg/SVGGraphicsElement.cpp:
+ (WebCore::SVGGraphicsElement::svgAttributeChanged): Ditto.
+ * svg/SVGImageElement.cpp:
+ (WebCore::SVGImageElement::svgAttributeChanged): Ditto.
+ * svg/SVGLineElement.cpp:
+ (WebCore::SVGLineElement::svgAttributeChanged): Ditto.
+ * svg/SVGLinearGradientElement.cpp:
+ (WebCore::SVGLinearGradientElement::svgAttributeChanged): Ditto.
+ * svg/SVGMPathElement.cpp:
+ (WebCore::SVGMPathElement::svgAttributeChanged): Ditto.
+ * svg/SVGMarkerElement.cpp:
+ (WebCore::SVGMarkerElement::svgAttributeChanged): Ditto.
+ * svg/SVGMaskElement.cpp:
+ (WebCore::SVGMaskElement::svgAttributeChanged): Ditto.
+ * svg/SVGPathElement.cpp:
+ (WebCore::SVGPathElement::svgAttributeChanged): Ditto.
+ * svg/SVGPatternElement.cpp:
+ (WebCore::SVGPatternElement::svgAttributeChanged): Ditto.
+ * svg/SVGPolyElement.cpp:
+ (WebCore::SVGPolyElement::svgAttributeChanged): Ditto.
+ * svg/SVGRadialGradientElement.cpp:
+ (WebCore::SVGRadialGradientElement::svgAttributeChanged): Ditto.
+ * svg/SVGRectElement.cpp:
+ (WebCore::SVGRectElement::svgAttributeChanged): Ditto.
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::svgAttributeChanged): Ditto.
+ * svg/SVGScriptElement.cpp:
+ (WebCore::SVGScriptElement::svgAttributeChanged): Ditto.
+ * svg/SVGStopElement.cpp:
+ (WebCore::SVGStopElement::svgAttributeChanged): Ditto.
+ * svg/SVGSymbolElement.cpp:
+ (WebCore::SVGSymbolElement::svgAttributeChanged): Ditto.
+ * svg/SVGTRefElement.cpp:
+ (WebCore::SVGTRefElement::svgAttributeChanged): Ditto.
+ * svg/SVGTextContentElement.cpp:
+ (WebCore::SVGTextContentElement::svgAttributeChanged): Ditto.
+ * svg/SVGTextPathElement.cpp:
+ (WebCore::SVGTextPathElement::svgAttributeChanged): Ditto.
+ * svg/SVGTextPositioningElement.cpp:
+ (WebCore::SVGTextPositioningElement::svgAttributeChanged): Ditto.
+ * svg/SVGUseElement.cpp:
+ (WebCore::SVGUseElement::svgAttributeChanged): Ditto.
+ * svg/animation/SVGSMILElement.cpp:
+ (WebCore::SVGSMILElement::svgAttributeChanged): Ditto.
+
</ins><span class="cx"> 2015-02-02 Darin Adler <darin@apple.com>
</span><span class="cx">
</span><span class="cx"> REGRESSION (r170576): Storage leaks in parsing of CSS image sizes
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> // Unlike other SVG*Element classes, SVGAElement only listens to SVGURIReference changes
</span><span class="cx"> // as none of the other properties changes the linking behaviour for our <a> element.
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimateElementBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -258,7 +258,7 @@
</span><span class="cx">
</span><span class="cx"> CSSPropertyID id = cssPropertyID(attributeName.localName());
</span><span class="cx">
</span><del>- SVGElementInstance::InstanceUpdateBlocker blocker(&targetElement);
</del><ins>+ SVGElement::InstanceUpdateBlocker blocker(targetElement);
</ins><span class="cx"> applyCSSPropertyToTarget(targetElement, id, valueAsString);
</span><span class="cx">
</span><span class="cx"> // If the target element has instances, update them as well, w/o requiring the <use> tree to be rebuilt.
</span><span class="lines">@@ -274,7 +274,7 @@
</span><span class="cx">
</span><span class="cx"> CSSPropertyID id = cssPropertyID(attributeName.localName());
</span><span class="cx">
</span><del>- SVGElementInstance::InstanceUpdateBlocker blocker(&targetElement);
</del><ins>+ SVGElement::InstanceUpdateBlocker blocker(targetElement);
</ins><span class="cx"> removeCSSPropertyFromTarget(targetElement, id);
</span><span class="cx">
</span><span class="cx"> // If the target element has instances, update them as well, w/o requiring the <use> tree to be rebuilt.
</span><span class="lines">@@ -293,7 +293,7 @@
</span><span class="cx"> if (attributeName == anyQName() || !targetElement.inDocument() || !targetElement.parentNode())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- SVGElementInstance::InstanceUpdateBlocker blocker(&targetElement);
</del><ins>+ SVGElement::InstanceUpdateBlocker blocker(targetElement);
</ins><span class="cx"> notifyTargetAboutAnimValChange(targetElement, attributeName);
</span><span class="cx">
</span><span class="cx"> // If the target element has instances, update them as well, w/o requiring the <use> tree to be rebuilt.
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedPathcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedPath.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedPath.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAnimatedPath.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> for (SVGElementAnimatedPropertyList::const_iterator it = animatedTypes.begin(); it != end; ++it)
</span><span class="cx"> result.append(castAnimatedPropertyToActualType<SVGAnimatedPathSegListPropertyTearOff>(it->properties[0].get()));
</span><span class="cx">
</span><del>- SVGElementInstance::InstanceUpdateBlocker blocker(property->contextElement());
</del><ins>+ SVGElement::InstanceUpdateBlocker blocker(*property->contextElement());
</ins><span class="cx">
</span><span class="cx"> size_t resultSize = result.size();
</span><span class="cx"> for (size_t i = 0; i < resultSize; ++i)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedTypeAnimatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -83,4 +83,9 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void SVGAnimatedTypeAnimator::setInstanceUpdatesBlocked(SVGElement& element, bool blocked)
+{
+ element.setInstanceUpdatesBlocked(blocked);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimatedTypeAnimatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -189,7 +189,8 @@
</span><span class="cx"> template<typename AnimValType>
</span><span class="cx"> void executeAction(AnimationAction action, const SVGElementAnimatedPropertyList& animatedTypes, unsigned whichProperty, typename AnimValType::ContentType* type = 0)
</span><span class="cx"> {
</span><del>- SVGElementInstance::InstanceUpdateBlocker blocker(animatedTypes[0].element);
</del><ins>+ // FIXME: Can't use SVGElement::InstanceUpdateBlocker because of circular header dependency. Would be nice to untangle this.
+ setInstanceUpdatesBlocked(*animatedTypes[0].element, true);
</ins><span class="cx">
</span><span class="cx"> SVGElementAnimatedPropertyList::const_iterator end = animatedTypes.end();
</span><span class="cx"> for (SVGElementAnimatedPropertyList::const_iterator it = animatedTypes.begin(); it != end; ++it) {
</span><span class="lines">@@ -216,7 +217,11 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span><ins>+
+ setInstanceUpdatesBlocked(*animatedTypes[0].element, false);
</ins><span class="cx"> }
</span><ins>+
+ static void setInstanceUpdatesBlocked(SVGElement&, bool);
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCircleElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCircleElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCircleElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGCircleElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::cxAttr
</span><span class="cx"> || attrName == SVGNames::cyAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGClipPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGClipPathElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGClipPathElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGClipPathElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (RenderObject* object = renderer())
</span><span class="cx"> object->setNeedsLayout();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGComponentTransferFunctionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> invalidateFilterPrimitiveParent(this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCursorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCursorElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCursorElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGCursorElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> // Any change of a cursor specific attribute triggers this recalc.
</span><span class="cx"> HashSet<SVGElement*>::const_iterator it = m_clients.begin();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -392,7 +392,7 @@
</span><span class="cx"> document().accessSVGExtensions().clearTargetDependencies(*this);
</span><span class="cx"> document().accessSVGExtensions().removeAllElementReferencesForTarget(this);
</span><span class="cx"> }
</span><del>- SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+ invalidateInstances();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SVGSVGElement* SVGElement::ownerSVGElement() const
</span><span class="lines">@@ -713,7 +713,7 @@
</span><span class="cx">
</span><span class="cx"> // Notify all the elements which have references to this element to rebuild their shadow and render
</span><span class="cx"> // trees, e.g. a <use> element references a target element before this target element is defined.
</span><del>- SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+ invalidateInstances();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool SVGElement::childShouldCreateRenderer(const Node& child) const
</span><span class="lines">@@ -1044,13 +1044,13 @@
</span><span class="cx"> {
</span><span class="cx"> CSSPropertyID propId = cssPropertyIdForSVGAttributeName(attrName);
</span><span class="cx"> if (propId > 0) {
</span><del>- SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+ invalidateInstances();
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (attrName == HTMLNames::classAttr) {
</span><span class="cx"> classAttributeChanged(className());
</span><del>- SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+ invalidateInstances();
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1061,7 +1061,7 @@
</span><span class="cx"> downcast<RenderSVGResourceContainer>(*renderer).idChanged();
</span><span class="cx"> if (inDocument())
</span><span class="cx"> buildPendingResourcesIfNeeded();
</span><del>- SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+ invalidateInstances();
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -1103,7 +1103,7 @@
</span><span class="cx">
</span><span class="cx"> if (change.source == ChildChangeSourceParser)
</span><span class="cx"> return;
</span><del>- SVGElementInstance::invalidateAllInstancesOfElement(this);
</del><ins>+ invalidateInstances();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RefPtr<CSSValue> SVGElement::getPresentationAttribute(const String& name)
</span><span class="lines">@@ -1130,6 +1130,10 @@
</span><span class="cx">
</span><span class="cx"> void SVGElement::setInstanceUpdatesBlocked(bool value)
</span><span class="cx"> {
</span><ins>+ // Catch any callers that calls setInstanceUpdatesBlocked(true) twice in a row.
+ // That probably indicates nested use of InstanceUpdateBlocker and a bug.
+ ASSERT(!value || !instanceUpdatesBlocked());
+
</ins><span class="cx"> if (m_svgRareData)
</span><span class="cx"> m_svgRareData->setInstanceUpdatesBlocked(value);
</span><span class="cx"> }
</span><span class="lines">@@ -1201,4 +1205,30 @@
</span><span class="cx"> dispatchSimulatedClick(0, sendMouseEvents ? SendMouseUpDownEvents : SendNoEvents);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void SVGElement::invalidateInstances()
+{
+ if (!inDocument())
+ return;
+
+ if (instanceUpdatesBlocked())
+ return;
+
+ auto& instances = this->instances();
+ if (instances.isEmpty())
+ return;
+
+ // Mark all use elements referencing 'element' for rebuilding
+ do {
+ SVGElement* instance = *instances.begin();
+ if (SVGUseElement* element = instance->correspondingUseElement()) {
+ ASSERT(element->inDocument());
+ element->invalidateShadowTree();
+ }
+ instance->setCorrespondingElement(nullptr);
+ } while (!instances.isEmpty());
+
+ // FIXME: Why is this needed?
+ document().updateStyleIfNeeded();
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.h (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.h        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGElement.h        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -155,6 +155,8 @@
</span><span class="cx">
</span><span class="cx"> void callClearTarget() { clearTarget(); }
</span><span class="cx">
</span><ins>+ class InstanceUpdateBlocker;
+
</ins><span class="cx"> protected:
</span><span class="cx"> SVGElement(const QualifiedName&, Document&);
</span><span class="cx"> virtual ~SVGElement();
</span><span class="lines">@@ -183,6 +185,8 @@
</span><span class="cx"> void updateRelativeLengthsInformation() { updateRelativeLengthsInformation(selfHasRelativeLengths(), this); }
</span><span class="cx"> void updateRelativeLengthsInformation(bool hasRelativeLengths, SVGElement*);
</span><span class="cx">
</span><ins>+ class InstanceInvalidationGuard;
+
</ins><span class="cx"> private:
</span><span class="cx"> friend class SVGElementInstance;
</span><span class="cx">
</span><span class="lines">@@ -200,6 +204,8 @@
</span><span class="cx"> virtual bool filterOutAnimatableAttribute(const QualifiedName&) const;
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+ void invalidateInstances();
+
</ins><span class="cx"> std::unique_ptr<SVGElementRareData> m_svgRareData;
</span><span class="cx">
</span><span class="cx"> HashSet<SVGElement*> m_elementsWithRelativeLengths;
</span><span class="lines">@@ -210,6 +216,22 @@
</span><span class="cx">
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+class SVGElement::InstanceInvalidationGuard {
+public:
+ InstanceInvalidationGuard(SVGElement&);
+ ~InstanceInvalidationGuard();
+private:
+ SVGElement& m_element;
+};
+
+class SVGElement::InstanceUpdateBlocker {
+public:
+ InstanceUpdateBlocker(SVGElement&);
+ ~InstanceUpdateBlocker();
+private:
+ SVGElement& m_element;
+};
+
</ins><span class="cx"> struct SVGAttributeHashTranslator {
</span><span class="cx"> static unsigned hash(const QualifiedName& key)
</span><span class="cx"> {
</span><span class="lines">@@ -222,6 +244,28 @@
</span><span class="cx"> static bool equal(const QualifiedName& a, const QualifiedName& b) { return a.matches(b); }
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+inline SVGElement::InstanceInvalidationGuard::InstanceInvalidationGuard(SVGElement& element)
+ : m_element(element)
+{
+}
+
+inline SVGElement::InstanceInvalidationGuard::~InstanceInvalidationGuard()
+{
+ m_element.invalidateInstances();
+}
+
+inline SVGElement::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement& element)
+ : m_element(element)
+{
+ m_element.setInstanceUpdatesBlocked(true);
+}
+
+inline SVGElement::InstanceUpdateBlocker::~InstanceUpdateBlocker()
+{
+ ASSERT(m_element.instanceUpdatesBlocked());
+ m_element.setInstanceUpdatesBlocked(false);
+}
+
</ins><span class="cx"> inline bool Node::hasTagName(const SVGQualifiedName& name) const
</span><span class="cx"> {
</span><span class="cx"> return isSVGElement() && downcast<SVGElement>(*this).hasTagName(name);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElementInstance.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElementInstance.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGElementInstance.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -167,31 +167,6 @@
</span><span class="cx"> appendChildToContainer<SVGElementInstance, SVGElementInstance>(child.get(), *this);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void SVGElementInstance::invalidateAllInstancesOfElement(SVGElement* element)
-{
- if (!element || !element->inDocument())
- return;
-
- if (element->instanceUpdatesBlocked())
- return;
-
- auto& instances = element->instances();
- if (instances.isEmpty())
- return;
-
- // Mark all use elements referencing 'element' for rebuilding
- do {
- SVGElement* instance = *instances.begin();
- if (SVGUseElement* element = instance->correspondingUseElement()) {
- ASSERT(element->inDocument());
- element->invalidateShadowTree();
- }
- instance->setCorrespondingElement(nullptr);
- } while (!instances.isEmpty());
-
- element->document().updateStyleIfNeeded();
-}
-
</del><span class="cx"> EventTargetInterface SVGElementInstance::eventTargetInterface() const
</span><span class="cx"> {
</span><span class="cx"> return SVGElementInstanceEventTargetInterfaceType;
</span><span class="lines">@@ -240,17 +215,4 @@
</span><span class="cx"> return *eventTargetData();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement* targetElement)
- : m_targetElement(targetElement)
-{
- if (m_targetElement)
- m_targetElement->setInstanceUpdatesBlocked(true);
</del><span class="cx"> }
</span><del>-
-SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker()
-{
- if (m_targetElement)
- m_targetElement->setInstanceUpdatesBlocked(false);
-}
-
-}
</del></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementInstanceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElementInstance.h (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElementInstance.h        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGElementInstance.h        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -71,27 +71,6 @@
</span><span class="cx">
</span><span class="cx"> Document* ownerDocument() const;
</span><span class="cx">
</span><del>- class InvalidationGuard {
- WTF_MAKE_NONCOPYABLE(InvalidationGuard);
- public:
- InvalidationGuard(SVGElement* element) : m_element(element) { }
- ~InvalidationGuard() { SVGElementInstance::invalidateAllInstancesOfElement(m_element); }
- private:
- SVGElement* m_element;
- };
-
- class InstanceUpdateBlocker {
- WTF_MAKE_NONCOPYABLE(InstanceUpdateBlocker);
- public:
- InstanceUpdateBlocker(SVGElement* targetElement);
- ~InstanceUpdateBlocker();
-
- private:
- SVGElement* m_targetElement;
- };
-
- static void invalidateAllInstancesOfElement(SVGElement*);
-
</del><span class="cx"> using TreeShared<SVGElementInstance>::ref;
</span><span class="cx"> using TreeShared<SVGElementInstance>::deref;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGEllipseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGEllipseElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGEllipseElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGEllipseElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::cxAttr
</span><span class="cx"> || attrName == SVGNames::cyAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEBlendElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEBlendElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEBlendElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEBlendElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -111,7 +111,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::modeAttr) {
</span><span class="cx"> primitiveAttributeChanged(attrName);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEColorMatrixElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::typeAttr || attrName == SVGNames::valuesAttr) {
</span><span class="cx"> primitiveAttributeChanged(attrName);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFECompositeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFECompositeElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFECompositeElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFECompositeElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::operatorAttr
</span><span class="cx"> || attrName == SVGNames::k1Attr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEConvolveMatrixElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -257,7 +257,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::edgeModeAttr
</span><span class="cx"> || attrName == SVGNames::divisorAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDiffuseLightingElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::surfaceScaleAttr
</span><span class="cx"> || attrName == SVGNames::diffuseConstantAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDisplacementMapElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::xChannelSelectorAttr || attrName == SVGNames::yChannelSelectorAttr || attrName == SVGNames::scaleAttr) {
</span><span class="cx"> primitiveAttributeChanged(attrName);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDropShadowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::inAttr
</span><span class="cx"> || attrName == SVGNames::stdDeviationAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEGaussianBlurElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::inAttr
</span><span class="cx"> || attrName == SVGNames::stdDeviationAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEImageElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEImageElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEImageElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::preserveAspectRatioAttr) {
</span><span class="cx"> invalidate();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFELightElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFELightElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFELightElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFELightElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::azimuthAttr
</span><span class="cx"> || attrName == SVGNames::elevationAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMergeNodeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::inAttr) {
</span><span class="cx"> invalidateFilterPrimitiveParent(this);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMorphologyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::operatorAttr || attrName == SVGNames::radiusAttr) {
</span><span class="cx"> primitiveAttributeChanged(attrName);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEOffsetElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::inAttr || attrName == SVGNames::dxAttr || attrName == SVGNames::dyAttr) {
</span><span class="cx"> invalidate();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFESpecularLightingElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::surfaceScaleAttr
</span><span class="cx"> || attrName == SVGNames::specularConstantAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETileElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETileElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETileElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFETileElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::inAttr) {
</span><span class="cx"> invalidate();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETurbulenceElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::baseFrequencyAttr
</span><span class="cx"> || attrName == SVGNames::numOctavesAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFilterElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFilterElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFilterElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFilterElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::xAttr
</span><span class="cx"> || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFilterPrimitiveStandardAttributescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> invalidate();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGForeignObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::widthAttr
</span><span class="cx"> || attrName == SVGNames::heightAttr) {
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGGElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (auto renderer = this->renderer())
</span><span class="cx"> RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGradientElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGradientElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGGradientElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (RenderObject* object = renderer())
</span><span class="cx"> object->setNeedsLayout();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGraphicsElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGraphicsElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGraphicsElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGGraphicsElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -137,7 +137,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (SVGTests::handleAttributeChange(this, attrName))
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGImageElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGImageElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGImageElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::widthAttr
</span><span class="cx"> || attrName == SVGNames::heightAttr) {
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLineElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLineElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLineElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGLineElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> bool isLengthAttribute = attrName == SVGNames::x1Attr
</span><span class="cx"> || attrName == SVGNames::y1Attr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLinearGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> updateRelativeLengthsInformation();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMPathElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMPathElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGMPathElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (SVGURIReference::isKnownAttribute(attrName)) {
</span><span class="cx"> buildPendingResource();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMarkerElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMarkerElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMarkerElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGMarkerElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::refXAttr
</span><span class="cx"> || attrName == SVGNames::refYAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMaskElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMaskElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMaskElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGMaskElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::xAttr
</span><span class="cx"> || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPathElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPathElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGPathElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -259,7 +259,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> RenderSVGPath* renderer = downcast<RenderSVGPath>(this->renderer());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPatternElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPatternElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPatternElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGPatternElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::xAttr
</span><span class="cx"> || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPolyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPolyElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPolyElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGPolyElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> auto* renderer = downcast<RenderSVGShape>(this->renderer());
</span><span class="cx"> if (!renderer)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGRadialGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> updateRelativeLengthsInformation();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGRectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGRectElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGRectElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGRectElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::xAttr
</span><span class="cx"> || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSVGElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSVGElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGSVGElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -300,7 +300,7 @@
</span><span class="cx"> object->setNeedsTransformUpdate();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (updateRelativeLengthsOrViewBox
</span><span class="cx"> || SVGLangSpace::isKnownAttribute(attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGScriptElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGScriptElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGScriptElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::typeAttr || attrName == HTMLNames::onerrorAttr)
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGStopElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGStopElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGStopElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGStopElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::offsetAttr) {
</span><span class="cx"> if (auto renderer = this->renderer())
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSymbolElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSymbolElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSymbolElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGSymbolElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> // Every other property change is ignored.
</span><span class="cx"> if (attrName == SVGNames::viewBoxAttr)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTRefElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTRefElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTRefElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGTRefElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -206,7 +206,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (SVGURIReference::isKnownAttribute(attrName)) {
</span><span class="cx"> buildPendingResource();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextContentElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextContentElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextContentElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGTextContentElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -268,7 +268,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::textLengthAttr)
</span><span class="cx"> m_specifiedTextLength = m_textLength.value;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPathElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPathElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGTextPathElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (SVGURIReference::isKnownAttribute(attrName)) {
</span><span class="cx"> buildPendingResource();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPositioningElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> bool updateRelativeLengths = attrName == SVGNames::xAttr
</span><span class="cx"> || attrName == SVGNames::yAttr
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGUseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGUseElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGUseElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/SVGUseElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -223,7 +223,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx">
</span><span class="cx"> if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::widthAttr || attrName == SVGNames::heightAttr) {
</span><span class="cx"> updateRelativeLengthsInformation();
</span></span></pre></div>
<a id="trunkSourceWebCoresvganimationSVGSMILElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp (179547 => 179548)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp        2015-02-03 14:17:12 UTC (rev 179547)
+++ trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp        2015-02-03 16:58:08 UTC (rev 179548)
</span><span class="lines">@@ -499,7 +499,7 @@
</span><span class="cx"> else if (attrName == SVGNames::attributeNameAttr)
</span><span class="cx"> setAttributeName(constructQualifiedName(this, fastGetAttribute(SVGNames::attributeNameAttr)));
</span><span class="cx"> else if (attrName.matches(XLinkNames::hrefAttr)) {
</span><del>- SVGElementInstance::InvalidationGuard invalidationGuard(this);
</del><ins>+ InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> buildPendingResource();
</span><span class="cx"> } else if (inDocument()) {
</span><span class="cx"> if (attrName == SVGNames::beginAttr)
</span></span></pre>
</div>
</div>
</body>
</html>