| Index: Source/core/animation/AnimationPlayer.cpp
|
| diff --git a/Source/core/animation/AnimationPlayer.cpp b/Source/core/animation/AnimationPlayer.cpp
|
| index b3ad782e389f17110f27b535006eead7da0c4ec4..d0c3ae7958e2d01f7dece049347ed391768ef988 100644
|
| --- a/Source/core/animation/AnimationPlayer.cpp
|
| +++ b/Source/core/animation/AnimationPlayer.cpp
|
| @@ -246,8 +246,11 @@ void AnimationPlayer::preCommit(int compositorGroup, bool startOnCompositor)
|
|
|
| if (shouldStart) {
|
| m_compositorGroup = compositorGroup;
|
| - if (startOnCompositor && maybeStartAnimationOnCompositor()) {
|
| - m_compositorState = adoptPtr(new CompositorState(*this));
|
| + if (startOnCompositor) {
|
| + if (maybeStartAnimationOnCompositor())
|
| + m_compositorState = adoptPtr(new CompositorState(*this));
|
| + else
|
| + cancelAffectedAnimationsOnCompositor();
|
| }
|
| }
|
| }
|
| @@ -331,6 +334,14 @@ void AnimationPlayer::notifyStartTime(double timelineTime)
|
| }
|
| }
|
|
|
| +bool AnimationPlayer::affects(CSSPropertyID property) const
|
| +{
|
| + if (!m_content || !m_content->isAnimation())
|
| + return false;
|
| +
|
| + return toAnimation(m_content.get())->affects(property);
|
| +}
|
| +
|
| double AnimationPlayer::calculateStartTime(double currentTime) const
|
| {
|
| return m_timeline->effectiveTime() - currentTime / m_playbackRate;
|
| @@ -690,6 +701,18 @@ void AnimationPlayer::setCompositorPending(bool sourceChanged)
|
| }
|
| }
|
|
|
| +void AnimationPlayer::cancelAnimationOnCompositor()
|
| +{
|
| + if (hasActiveAnimationsOnCompositor())
|
| + toAnimation(m_content.get())->cancelAnimationOnCompositor();
|
| +}
|
| +
|
| +void AnimationPlayer::cancelAffectedAnimationsOnCompositor()
|
| +{
|
| + if (m_content && m_content->isAnimation())
|
| + toAnimation(m_content.get())->cancelAffectedAnimationsOnCompositor();
|
| +}
|
| +
|
| bool AnimationPlayer::hasActiveAnimationsOnCompositor()
|
| {
|
| if (!m_content || !m_content->isAnimation())
|
| @@ -698,12 +721,6 @@ bool AnimationPlayer::hasActiveAnimationsOnCompositor()
|
| return toAnimation(m_content.get())->hasActiveAnimationsOnCompositor();
|
| }
|
|
|
| -void AnimationPlayer::cancelAnimationOnCompositor()
|
| -{
|
| - if (hasActiveAnimationsOnCompositor())
|
| - toAnimation(m_content.get())->cancelAnimationOnCompositor();
|
| -}
|
| -
|
| bool AnimationPlayer::update(TimingUpdateReason reason)
|
| {
|
| if (!m_timeline)
|
| @@ -806,7 +823,6 @@ AnimationPlayer::PlayStateUpdateScope::~PlayStateUpdateScope()
|
| if (oldPlayState != newPlayState) {
|
| bool wasActive = oldPlayState == Pending || oldPlayState == Running;
|
| bool isActive = newPlayState == Pending || newPlayState == Running;
|
| -
|
| if (!wasActive && isActive)
|
| TRACE_EVENT_NESTABLE_ASYNC_BEGIN1("blink.animations," TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Animation", m_player, "data", InspectorAnimationEvent::data(*m_player));
|
| else if (wasActive && !isActive)
|
|
|