Index: Source/core/svg/animation/SVGSMILElement.cpp |
diff --git a/Source/core/svg/animation/SVGSMILElement.cpp b/Source/core/svg/animation/SVGSMILElement.cpp |
index cb08bd6bbbf467d531b0aa159e00a935a3284104..7b2da5bc0d44c065cba85ed74e4c8f81cbb98a44 100644 |
--- a/Source/core/svg/animation/SVGSMILElement.cpp |
+++ b/Source/core/svg/animation/SVGSMILElement.cpp |
@@ -189,8 +189,7 @@ SVGSMILElement::~SVGSMILElement() |
smilBeginEventSender().cancelEvent(this); |
smilRepeatEventSender().cancelEvent(this); |
smilRepeatNEventSender().cancelEvent(this); |
- disconnectSyncBaseConditions(); |
- disconnectEventBaseConditions(); |
+ clearConditions(); |
if (m_timeContainer && m_targetElement && hasValidAttributeName()) |
m_timeContainer->unschedule(this, m_targetElement, m_attributeName); |
} |
@@ -200,6 +199,13 @@ void SVGSMILElement::clearResourceAndEventBaseReferences() |
document().accessSVGExtensions()->removeAllTargetReferencesForElement(this); |
} |
+void SVGSMILElement::clearConditions() |
+{ |
+ disconnectSyncBaseConditions(); |
+ disconnectEventBaseConditions(); |
+ m_conditions.clear(); |
+} |
+ |
void SVGSMILElement::buildPendingResource() |
{ |
clearResourceAndEventBaseReferences(); |
@@ -322,8 +328,7 @@ void SVGSMILElement::removedFrom(ContainerNode* rootParent) |
{ |
if (rootParent->inDocument()) { |
clearResourceAndEventBaseReferences(); |
- disconnectSyncBaseConditions(); |
- disconnectEventBaseConditions(); |
+ clearConditions(); |
setTargetElement(0); |
setAttributeName(anyQName()); |
animationAttributeChanged(); |
@@ -505,8 +510,7 @@ void SVGSMILElement::parseAttribute(const QualifiedName& name, const AtomicStrin |
{ |
if (name == SVGNames::beginAttr) { |
if (!m_conditions.isEmpty()) { |
- disconnectSyncBaseConditions(); |
- m_conditions.clear(); |
+ clearConditions(); |
parseBeginOrEnd(fastGetAttribute(SVGNames::endAttr), End); |
} |
parseBeginOrEnd(value.string(), Begin); |
@@ -514,8 +518,7 @@ void SVGSMILElement::parseAttribute(const QualifiedName& name, const AtomicStrin |
connectSyncBaseConditions(); |
} else if (name == SVGNames::endAttr) { |
if (!m_conditions.isEmpty()) { |
- disconnectSyncBaseConditions(); |
- m_conditions.clear(); |
+ clearConditions(); |
parseBeginOrEnd(fastGetAttribute(SVGNames::beginAttr), Begin); |
} |
parseBeginOrEnd(value.string(), End); |