Index: Source/core/svg/animation/SVGSMILElement.cpp |
diff --git a/Source/core/svg/animation/SVGSMILElement.cpp b/Source/core/svg/animation/SVGSMILElement.cpp |
index 91c3499ae4422730e5d30c2215893bdfdaf5dfb4..13bfae956efa042fc51f4adf6a46d7530199bf2a 100644 |
--- a/Source/core/svg/animation/SVGSMILElement.cpp |
+++ b/Source/core/svg/animation/SVGSMILElement.cpp |
@@ -761,7 +761,7 @@ SMILTime SVGSMILElement::findInstanceTime(BeginOrEnd beginOrEnd, SMILTime minimu |
return SMILTime::unresolved(); |
if (currentTime < minimumTime) |
- return beginOrEnd == Begin ? SMILTime::unresolved() : SMILTime::indefinite(); |
+ return SMILTime::unresolved(); |
if (currentTime > minimumTime) |
return currentTime; |
@@ -872,7 +872,7 @@ void SVGSMILElement::resolveFirstInterval() |
} |
} |
-void SVGSMILElement::resolveNextInterval(bool notifyDependents) |
+bool SVGSMILElement::resolveNextInterval(bool notifyDependents) |
{ |
SMILTime begin; |
SMILTime end; |
@@ -885,7 +885,10 @@ void SVGSMILElement::resolveNextInterval(bool notifyDependents) |
if (notifyDependents) |
notifyDependentsIntervalChanged(NewInterval); |
m_nextProgressTime = min(m_nextProgressTime, m_intervalBegin); |
+ return true; |
} |
+ |
+ return false; |
} |
SMILTime SVGSMILElement::nextProgressTime() const |
@@ -984,13 +987,15 @@ void SVGSMILElement::seekToIntervalCorrespondingToTime(SMILTime elapsed) |
if (nextBegin < m_intervalEnd && elapsed >= nextBegin) { |
// End current interval, and start a new interval from the 'nextBegin' time. |
m_intervalEnd = nextBegin; |
- resolveNextInterval(false); |
+ if (!resolveNextInterval(false)) |
+ break; |
continue; |
} |
// If the desired 'elapsed' time is past the current interval, advance to the next. |
if (elapsed >= m_intervalEnd) { |
- resolveNextInterval(false); |
+ if (!resolveNextInterval(false)) |
+ break; |
continue; |
} |