Skip to content
Browse files

Ensure each tick gets it's own fxNow - Fixes #12837 - Thanks @chadparry

Closes gh-1022
Closes gh-1021
  • Loading branch information...
1 parent 6b14cef commit 781a5c0b78a029b079aae970200d3e4edf543349 @gnarf gnarf committed Nov 7, 2012
Showing with 32 additions and 0 deletions.
  1. +3 −0 src/effects.js
  2. +29 −0 test/unit/effects.js
View
3 src/effects.js
@@ -612,6 +612,8 @@ jQuery.fx.tick = function() {
timers = jQuery.timers,
i = 0;
+ fxNow = jQuery.now();
+
for ( ; i < timers.length; i++ ) {
timer = timers[ i ];
// Checks the timer has not already been removed
@@ -623,6 +625,7 @@ jQuery.fx.tick = function() {
if ( !timers.length ) {
jQuery.fx.stop();
}
+ fxNow = undefined;
};
jQuery.fx.timer = function( timer ) {
View
29 test/unit/effects.js
@@ -1818,6 +1818,35 @@ test( "Animate properly sets overflow hidden when animating width/height (#12117
});
});
+test( "Each tick of the timer loop uses a fresh time (#12837)", function() {
+ var lastVal, current,
+ tmp = jQuery({
+ test: 0
+ });
+ expect( 3 );
+ tmp.animate({
+ test: 100
+ }, {
+ step: function( p, fx ) {
+ ok( fx.now !== lastVal, "Current value is not the last value: " + lastVal + " - " + fx.now );
+ lastVal = fx.now;
+ }
+ });
+ current = jQuery.now();
+ // intentionally empty, we want to spin wheels until the time changes.
+ while ( current === jQuery.now() ) { }
+
+ // now that we have a new time, run another tick
+ jQuery.fx.tick();
+
+ current = jQuery.now();
+ // intentionally empty, we want to spin wheels until the time changes.
+ while ( current === jQuery.now() ) { }
+
+ jQuery.fx.tick();
+ tmp.stop();
+});
+
test( "Animations with 0 duration don't ease (#12273)", 1, function() {
jQuery.easing.test = function() {
ok( false, "Called easing" );

0 comments on commit 781a5c0

Please sign in to comment.
Something went wrong with that request. Please try again.