| Index: Source/core/svg/animation/SMILTimeContainer.cpp
|
| diff --git a/Source/core/svg/animation/SMILTimeContainer.cpp b/Source/core/svg/animation/SMILTimeContainer.cpp
|
| old mode 100644
|
| new mode 100755
|
| index 4c5510cc4f6fbc270914c4ce41413a2bbb9f36d5..6c9a9b8b40f4a01eb699ee59466db87aa21f6085
|
| --- a/Source/core/svg/animation/SMILTimeContainer.cpp
|
| +++ b/Source/core/svg/animation/SMILTimeContainer.cpp
|
| @@ -54,6 +54,8 @@
|
|
|
| SMILTimeContainer::~SMILTimeContainer()
|
| {
|
| + m_timer.stop();
|
| + ASSERT(!m_timer.isActive());
|
| #ifndef NDEBUG
|
| ASSERT(!m_preventScheduledAnimationsChanges);
|
| #endif
|
| @@ -264,7 +266,7 @@
|
| m_preventScheduledAnimationsChanges = true;
|
| #endif
|
|
|
| - AnimationsVector animationsToApply;
|
| + Vector<RefPtr<SVGSMILElement> > animationsToApply;
|
| GroupedAnimationsMap::iterator end = m_scheduledAnimations.end();
|
| for (GroupedAnimationsMap::iterator it = m_scheduledAnimations.begin(); it != end; ++it) {
|
| AnimationsVector* scheduled = it->value.get();
|
| @@ -321,6 +323,22 @@
|
| #endif
|
|
|
| startTimer(earliestFireTime, animationFrameDelay);
|
| -}
|
| -
|
| -}
|
| +
|
| + for (unsigned i = 0; i < animationsToApplySize; ++i) {
|
| + if (animationsToApply[i]->inDocument() && animationsToApply[i]->isSVGDiscardElement()) {
|
| + RefPtr<SVGSMILElement> animDiscard = animationsToApply[i];
|
| + RefPtr<SVGElement> targetElement = animDiscard->targetElement();
|
| + if (targetElement && targetElement->inDocument()) {
|
| + targetElement->remove(IGNORE_EXCEPTION);
|
| + ASSERT(!targetElement->inDocument());
|
| + }
|
| +
|
| + if (animDiscard->inDocument()) {
|
| + animDiscard->remove(IGNORE_EXCEPTION);
|
| + ASSERT(!animDiscard->inDocument());
|
| + }
|
| + }
|
| + }
|
| +}
|
| +
|
| +}
|
|
|