From 8bb94c44998f1732e8c15af35540670d1e090ecc Mon Sep 17 00:00:00 2001 From: Boris Chiou Date: Mon, 29 Aug 2016 18:46:07 +0800 Subject: [PATCH] Bug 1298742 - Part 1: Factor out MarkCascadeUpdate(). r=hiro We mark the cascade update many times, so it's better to factor it out. MozReview-Commit-ID: HbE980gOJ9M --HG-- extra : rebase_source : a76dfc489f378c5bd7e711f296d0599ecf2322c5 --- dom/animation/KeyframeEffect.cpp | 41 +++++++++++++++----------------- dom/animation/KeyframeEffect.h | 4 ++++ 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/dom/animation/KeyframeEffect.cpp b/dom/animation/KeyframeEffect.cpp index f9b08ce5e32b..a786bb48428a 100644 --- a/dom/animation/KeyframeEffect.cpp +++ b/dom/animation/KeyframeEffect.cpp @@ -104,13 +104,7 @@ KeyframeEffectReadOnly::NotifyAnimationTimingUpdated() // animation cascade for this element whenever that changes. bool inEffect = IsInEffect(); if (inEffect != mInEffectOnLastAnimationTimingUpdate) { - if (mTarget) { - EffectSet* effectSet = EffectSet::GetEffectSet(mTarget->mElement, - mTarget->mPseudoType); - if (effectSet) { - effectSet->MarkCascadeNeedsUpdate(); - } - } + MarkCascadeNeedsUpdate(); mInEffectOnLastAnimationTimingUpdate = inEffect; } @@ -305,15 +299,9 @@ KeyframeEffectReadOnly::UpdateProperties(nsStyleContext* aStyleContext) CalculateCumulativeChangeHint(aStyleContext); - if (mTarget) { - EffectSet* effectSet = EffectSet::GetEffectSet(mTarget->mElement, - mTarget->mPseudoType); - if (effectSet) { - effectSet->MarkCascadeNeedsUpdate(); - } + MarkCascadeNeedsUpdate(); - RequestRestyle(EffectCompositor::RestyleType::Layer); - } + RequestRestyle(EffectCompositor::RestyleType::Layer); } void @@ -1229,13 +1217,7 @@ KeyframeEffectReadOnly::SetAnimation(Animation* aAnimation) // Restyle for the new animation. RequestRestyle(EffectCompositor::RestyleType::Layer); - if (mTarget) { - EffectSet* effectSet = EffectSet::GetEffectSet(mTarget->mElement, - mTarget->mPseudoType); - if (effectSet) { - effectSet->MarkCascadeNeedsUpdate(); - } - } + MarkCascadeNeedsUpdate(); NotifyAnimationTimingUpdated(); } @@ -1275,6 +1257,21 @@ KeyframeEffectReadOnly::MaybeUpdateFrameForCompositor() } } +void +KeyframeEffectReadOnly::MarkCascadeNeedsUpdate() +{ + if (!mTarget) { + return; + } + + EffectSet* effectSet = EffectSet::GetEffectSet(mTarget->mElement, + mTarget->mPseudoType); + if (!effectSet) { + return; + } + effectSet->MarkCascadeNeedsUpdate(); +} + //--------------------------------------------------------------------- // // KeyframeEffect diff --git a/dom/animation/KeyframeEffect.h b/dom/animation/KeyframeEffect.h index d4831e8d3bd5..8e7c47d1425e 100644 --- a/dom/animation/KeyframeEffect.h +++ b/dom/animation/KeyframeEffect.h @@ -349,6 +349,10 @@ protected: already_AddRefed GetTargetStyleContext(); + // A wrapper for marking cascade update according to the current + // target and its effectSet. + void MarkCascadeNeedsUpdate(); + Maybe mTarget; KeyframeEffectParams mEffectOptions;