Bug 1267937 - Part 1: Clear mProgressOnLastCompose once we are not in effect. r?birtles
MozReview-Commit-ID: 7g0eytuTE8P
--- a/dom/animation/KeyframeEffect.cpp
+++ b/dom/animation/KeyframeEffect.cpp
@@ -180,24 +180,24 @@ KeyframeEffectReadOnly::NotifyAnimationT
// Bug 1216843: When we implement iteration composite modes, we need to
// also detect if the current iteration has changed.
if (mAnimation && GetComputedTiming().mProgress != mProgressOnLastCompose) {
EffectCompositor::RestyleType restyleType =
CanThrottle() ?
EffectCompositor::RestyleType::Throttled :
EffectCompositor::RestyleType::Standard;
RequestRestyle(restyleType);
+ }
- // If we're not relevant, we will have been removed from the EffectSet.
- // As a result, when the restyle we requested above is fulfilled, our
- // ComposeStyle will not get called and mProgressOnLastCompose will not
- // be updated. Instead, we need to manually clear it.
- if (!isRelevant) {
- mProgressOnLastCompose.SetNull();
- }
+ // If we're no longer "in effect", our ComposeStyle method will never be
+ // called and we will never have a chance to update mProgressOnLastCompose.
+ // We clear mProgressOnLastCompose here to ensure that if we later become
+ // "in effect" we will request a restyle (above).
+ if (!inEffect) {
+ mProgressOnLastCompose.SetNull();
}
}
Nullable<TimeDuration>
KeyframeEffectReadOnly::GetLocalTime() const
{
// Since the *animation* start time is currently always zero, the local
// time is equal to the parent time.