зеркало из https://github.com/mozilla/gecko-dev.git
a362d9f14e
We currently determine if we need refresh driver ticks when composing style but sometimes we might not need ticks for composing style but we might need one more tick in order to queue a final end event. Currently, this doesn't seem to be a problem because FlushAnimations calls Animation::Tick where we queue up events. When we remove the call to Animation::Tick from FlushAnimations in order to make FlushAnimations purely responsible for posting restyles, however, we will create a situation where we might mark an animation collection as no longer needing refreshes and not simultaneously queueing the corresponding event. If another animation collection is deleted in the meantime we may trigger the code that causes us to disassociate from the refresh driver and the corresponding event will never be dispatched. Long-term (bug 1195180) we will check if it we can stop observing the refresh driver and queue events in the same step. Until then, this patch adds a method to detect this particular situation and uses it to avoid unregistering from the refresh driver while we still have end events to queue. |
||
---|---|---|
.. | ||
test | ||
Animation.cpp | ||
Animation.h | ||
AnimationComparator.h | ||
AnimationEffectReadOnly.cpp | ||
AnimationEffectReadOnly.h | ||
AnimationTimeline.cpp | ||
AnimationTimeline.h | ||
AnimationUtils.h | ||
DocumentTimeline.cpp | ||
DocumentTimeline.h | ||
KeyframeEffect.cpp | ||
KeyframeEffect.h | ||
PendingAnimationTracker.cpp | ||
PendingAnimationTracker.h | ||
moz.build |