Commit e755c194 authored by Richard Gibson's avatar Richard Gibson Committed by Dave Methvin

Fix #12447: Ensure starting-point calc takes finite time. Close gh-922.

parent 560c178c
...@@ -5,12 +5,13 @@ var fxNow, timerId, ...@@ -5,12 +5,13 @@ var fxNow, timerId,
animationPrefilters = [ defaultPrefilter ], animationPrefilters = [ defaultPrefilter ],
tweeners = { tweeners = {
"*": [function( prop, value ) { "*": [function( prop, value ) {
var end, unit, prevScale, var end, unit,
tween = this.createTween( prop, value ), tween = this.createTween( prop, value ),
parts = rfxnum.exec( value ), parts = rfxnum.exec( value ),
target = tween.cur(), target = tween.cur(),
start = +target || 0, start = +target || 0,
scale = 1; scale = 1,
maxIterations = 20;
if ( parts ) { if ( parts ) {
end = +parts[2]; end = +parts[2];
...@@ -26,17 +27,15 @@ var fxNow, timerId, ...@@ -26,17 +27,15 @@ var fxNow, timerId,
do { do {
// If previous iteration zeroed out, double until we get *something* // If previous iteration zeroed out, double until we get *something*
// Use a string for doubling factor so we don't accidentally see scale as unchanged below // Use a string for doubling factor so we don't accidentally see scale as unchanged below
prevScale = scale = scale || ".5"; scale = scale || ".5";
// Adjust and apply // Adjust and apply
start = start / scale; start = start / scale;
jQuery.style( tween.elem, prop, start + unit ); jQuery.style( tween.elem, prop, start + unit );
// Update scale, tolerating zeroes from tween.cur() // Update scale, tolerating zero or NaN from tween.cur()
scale = tween.cur() / target; // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
// Stop looping if we've hit the mark or scale is unchanged
} while ( scale !== 1 && scale !== prevScale );
} }
tween.unit = unit; tween.unit = unit;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment