gecko-dev/dom/animation
Brian Birtles b47411b097 Bug 1240228 - Don't update an effect's timing when tweaking its animation's hold time; r=heycam
In some circumstances when composing style, we tweak the time of the animation
before telling the effect to compose style. This is to avoid visual flicker in
certain situations where the main thread progress is being synchronized with an
animation running on the compositor.

In the past, effects would store their latest sample time locally so when
tweaking the animation time, we would need to call UpdateEffect() after tweaking
the time, and then again after restoring it as otherwise the style composed by
the effect would not reflect the adjusted time.

Now, however, effect's always query their animation for the time so this is no
longer necessary. Furthermore, the actions triggered by UpdateEffect are not
desirable in this case because they can, amongst other things, cause the
associated EffectSet to be destroyed and recreated.

Specifically, Animation::UpdateEffect() calls
KeyframeEffectReadOnly::NotifyAnimationTimingUpdated() which:

  * Calls UpdateTargetRegistration which can trigger EffectSet
    destruction/creation which is undesirable in this case because we intend to
    restore whatever changes we make to the Animation's state and deleting and
    recreating the EffectSet will cause any pointers to it to dangle.

  * Cause us to possibly reset the "is running on compositor" status.
    This too is undesirable since we intend to restore the state of the
    Animation immediately after tweaking the hold time so we don't want to
    act as if any state has changed.

  * Similarly for marking the cascade as possibly needing an update or
    requesting a restyle.

In summary, all the actions performed by NotifyAnimationTimingUpdated are
unnecessary and undesirable in this situation where we are temporarily tweaking
an Animation's current time only to restore it immediately afterwards since the
actions are all involved with recognizing actual changes in state.
2016-01-19 08:05:08 +09:00
..
test Bug 1179627 - Part 1: Implement Animation.id. r=smaug, r=birtles 2016-01-08 03:17:00 -05:00
Animation.cpp Bug 1240228 - Don't update an effect's timing when tweaking its animation's hold time; r=heycam 2016-01-19 08:05:08 +09:00
Animation.h Bug 1096774 - Part 1: Implement Animation Constructor. r=birtles, r=smaug 2016-01-16 19:02:00 -05:00
AnimationComparator.h Bug 1171817 part 14 - Add AnimationPtrComparator class; r=dbaron 2015-06-09 11:13:54 +09:00
AnimationEffectReadOnly.cpp Bug 1152551, part 2 - Fix mode lines in dom/. r=jst 2015-05-03 15:32:37 -04:00
AnimationEffectReadOnly.h Bug 1214536 - Part 7: Rename AnimationTiming as TimingParams. r=birtles, r=smaug 2016-01-13 18:41:00 +01:00
AnimationEffectTimingReadOnly.cpp Bug 1214536 - Part 8: Add an operator=() for TimingParams. r=birtles 2016-01-13 18:42:00 +01:00
AnimationEffectTimingReadOnly.h Bug 1214536 - Part 8: Add an operator=() for TimingParams. r=birtles 2016-01-13 18:42:00 +01:00
AnimationTimeline.cpp Bug 1212720 - Part 3: Remove AnimationTimeline.getAnimations. r=heycam, r=smaug 2015-12-21 20:39:00 -05:00
AnimationTimeline.h Bug 1212720 - Part 3: Remove AnimationTimeline.getAnimations. r=heycam, r=smaug 2015-12-21 20:39:00 -05:00
AnimationUtils.cpp Bug 1226118 part 5 - Move LogAsyncAnimationFailure to AnimationUtils; r=dholbert 2015-12-04 08:32:53 +09:00
AnimationUtils.h Bug 1226118 part 5 - Move LogAsyncAnimationFailure to AnimationUtils; r=dholbert 2015-12-04 08:32:53 +09:00
AnimValuesStyleRule.cpp Bug 1232561 part 3 - Move AnimValuesStyleRule to a separate file; r=heycam 2016-01-06 11:04:06 +09:00
AnimValuesStyleRule.h Bug 1232561 part 3 - Move AnimValuesStyleRule to a separate file; r=heycam 2016-01-06 11:04:06 +09:00
ComputedTimingFunction.cpp Bug 1208940 - Move ComputedTimingFunction to its own file. r=bbirtles 2015-11-01 22:41:00 +01:00
ComputedTimingFunction.h Bug 1214536 - Part 5: Add AnimationEffectTimingReadOnly interface. r=birtles, r=smaug 2016-01-13 18:37:00 +01:00
DocumentTimeline.cpp Bug 1232829 - Detach obsolete DocumentTimeline from refresh driver when the document is reset; r=smaug 2015-12-22 10:08:19 +09:00
DocumentTimeline.h Bug 1209519 - Undef GetCurrentTime in DocumentTimeline.h to fix --disable-accessibility bustage. r=birtles 2015-09-29 10:04:30 -04:00
EffectCompositor.cpp Bug 1240228 - Don't update an effect's timing when tweaking its animation's hold time; r=heycam 2016-01-19 08:05:08 +09:00
EffectCompositor.h Bug 1235112 - Move animation style rule processors to EffectCompositor; r=heycam 2016-01-15 15:15:47 +09:00
EffectSet.cpp Bug 1226091 - Use MayHaveAnimations flag for animations on pseudo elements too; r=smaug 2016-01-18 13:40:12 +09:00
EffectSet.h Bug 1237467 part 4 - Delete the EffectSet when it becomes empty; r=heycam 2016-01-15 15:15:47 +09:00
KeyframeEffect.cpp Bug 1237467 part 4 - Delete the EffectSet when it becomes empty; r=heycam 2016-01-15 15:15:47 +09:00
KeyframeEffect.h Bug 1214536 - Part 7: Rename AnimationTiming as TimingParams. r=birtles, r=smaug 2016-01-13 18:41:00 +01:00
moz.build Bug 1214536 - Part 5: Add AnimationEffectTimingReadOnly interface. r=birtles, r=smaug 2016-01-13 18:37:00 +01:00
PendingAnimationTracker.cpp Bug 1096774 - Part 2: Fix crash if animation has no timeline. r=birtles 2016-01-14 19:27:00 -05:00
PendingAnimationTracker.h Bug 1152551, part 3 - Fix more mode lines in dom/. r=jst 2015-05-03 15:32:37 -04:00
PseudoElementHashEntry.h Bug 1232577 part 2 - Add a hashmap to ElementCompositor to track which (pseudo-) elements need to have their animation style rule updated; r=heycam 2016-01-13 07:54:53 +09:00