Chromium Code Reviews| Index: Source/core/animation/AnimationTimeline.cpp |
| diff --git a/Source/core/animation/AnimationTimeline.cpp b/Source/core/animation/AnimationTimeline.cpp |
| index 725edd1987b2ccee0a632405c42dbb9b500fd267..6371588bd2a20461c5df51ee8add80be1e4280c7 100644 |
| --- a/Source/core/animation/AnimationTimeline.cpp |
| +++ b/Source/core/animation/AnimationTimeline.cpp |
| @@ -63,6 +63,9 @@ PassRefPtrWillBeRawPtr<AnimationTimeline> AnimationTimeline::create(Document* do |
| AnimationTimeline::AnimationTimeline(Document* document, PassOwnPtrWillBeRawPtr<PlatformTiming> timing) |
| : m_document(document) |
| , m_zeroTime(0) |
| + , m_lastCurrentTime(0) |
| + , m_lastRealTime(0) |
| + , m_playbackRate(1) |
| { |
| if (!timing) |
| m_timing = adoptPtrWillBeNoop(new AnimationTimelineTiming(this)); |
| @@ -167,9 +170,8 @@ void AnimationTimeline::AnimationTimelineTiming::trace(Visitor* visitor) |
| double AnimationTimeline::zeroTime() |
| { |
| - if (!m_zeroTime && m_document && m_document->loader()) { |
|
dstockwell
2014/11/12 03:39:42
Don't reformat code.
samli
2014/11/12 20:01:13
Done.
|
| + if (!m_zeroTime && m_document && m_document->loader()) |
| m_zeroTime = m_document->loader()->timing()->referenceMonotonicTime(); |
| - } |
| return m_zeroTime; |
| } |
| @@ -184,7 +186,7 @@ double AnimationTimeline::currentTimeInternal(bool& isNull) |
| isNull = true; |
| return std::numeric_limits<double>::quiet_NaN(); |
| } |
| - double result = m_document->animationClock().currentTime() - zeroTime(); |
| + double result = m_lastCurrentTime + (m_document->animationClock().currentTime() - m_lastRealTime - zeroTime()) * playbackRateForInspector(); |
| isNull = std::isnan(result); |
| return result; |
| } |
| @@ -230,6 +232,18 @@ void AnimationTimeline::setOutdatedAnimationPlayer(AnimationPlayer* player) |
| m_timing->serviceOnNextFrame(); |
| } |
| +void AnimationTimeline::setPlaybackRateForInspector(double playbackRate) |
|
dstockwell
2014/11/12 03:39:42
Add a fixme, needs to invalidate compositor animat
samli
2014/11/12 20:01:13
Done.
|
| +{ |
| + m_lastCurrentTime = currentTimeInternal(); |
|
dstockwell
2014/11/12 03:39:42
I'm not sure you need both lastCurrentTime and las
samli
2014/11/12 20:01:13
(m_document->animationClock().currentTime() + m_de
dstockwell
2014/11/12 22:49:44
Can we just special case playback rate 0, like in
|
| + m_lastRealTime = m_document->animationClock().currentTime() - zeroTime(); |
| + m_playbackRate = playbackRate; |
| +} |
| + |
| +double AnimationTimeline::playbackRateForInspector() const |
| +{ |
| + return m_playbackRate; |
| +} |
| + |
| #if !ENABLE(OILPAN) |
| void AnimationTimeline::detachFromDocument() |
| { |