Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 705598b012778841dd32762fdd1851d8ee4e61f0..f04a96cc1ee008b738d9d06839497a317f7ea1fc 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -161,7 +161,7 @@ class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient { |
} |
layer_tree_host_impl_->Animate( |
- layer_tree_host_impl_->CurrentFrameTimeTicks()); |
+ layer_tree_host_impl_->CurrentBeginFrameArgs().frame_time); |
layer_tree_host_impl_->UpdateBackgroundAnimateTicking(true); |
bool start_ready_animations = true; |
layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); |
@@ -171,7 +171,7 @@ class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient { |
layer_tree_host_impl_->ManageTiles(); |
} |
- layer_tree_host_impl_->ResetCurrentFrameTimeForNextFrame(); |
+ layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); |
} |
void SetActive(bool active) { |
@@ -1677,7 +1677,7 @@ void LayerTreeHostImpl::SetNeedsBeginFrame(bool enable) { |
void LayerTreeHostImpl::WillBeginImplFrame(const BeginFrameArgs& args) { |
// Sample the frame time now. This time will be used for updating animations |
// when we draw. |
- UpdateCurrentFrameTime(); |
+ UpdateCurrentBeginFrameArgs(args); |
// Cache the begin impl frame interval |
begin_impl_frame_interval_ = args.interval; |
} |
@@ -2396,9 +2396,9 @@ InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated( |
new_target.SetToMax(gfx::Vector2dF()); |
new_target.SetToMin(layer_impl->MaxScrollOffset()); |
- curve->UpdateTarget( |
- animation->TrimTimeToCurrentIteration(CurrentFrameTimeTicks()), |
- new_target); |
+ curve->UpdateTarget(animation->TrimTimeToCurrentIteration( |
+ CurrentBeginFrameArgs().frame_time), |
+ new_target); |
return ScrollStarted; |
} |
@@ -3171,22 +3171,28 @@ void LayerTreeHostImpl::SetTreePriority(TreePriority priority) { |
DidModifyTilePriorities(); |
} |
-void LayerTreeHostImpl::UpdateCurrentFrameTime() { |
- DCHECK(current_frame_timeticks_.is_null()); |
- current_frame_timeticks_ = gfx::FrameTime::Now(); |
+void LayerTreeHostImpl::UpdateCurrentBeginFrameArgs( |
+ const BeginFrameArgs& args) { |
+ DCHECK(!current_begin_frame_args_.IsValid()); |
+ current_begin_frame_args_ = args; |
+ // TODO(skyostil): Stop overriding the frame time once the usage of frame |
+ // timing is unified. |
+ current_begin_frame_args_.frame_time = gfx::FrameTime::Now(); |
} |
-void LayerTreeHostImpl::ResetCurrentFrameTimeForNextFrame() { |
- current_frame_timeticks_ = base::TimeTicks(); |
+void LayerTreeHostImpl::ResetCurrentBeginFrameArgsForNextFrame() { |
+ current_begin_frame_args_ = BeginFrameArgs(); |
} |
-base::TimeTicks LayerTreeHostImpl::CurrentFrameTimeTicks() { |
+BeginFrameArgs LayerTreeHostImpl::CurrentBeginFrameArgs() const { |
// Try to use the current frame time to keep animations non-jittery. But if |
// we're not in a frame (because this is during an input event or a delayed |
// task), fall back to physical time. This should still be monotonic. |
- if (!current_frame_timeticks_.is_null()) |
- return current_frame_timeticks_; |
- return gfx::FrameTime::Now(); |
+ if (current_begin_frame_args_.IsValid()) |
+ return current_begin_frame_args_; |
+ return BeginFrameArgs::Create(gfx::FrameTime::Now(), |
+ base::TimeTicks(), |
+ BeginFrameArgs::DefaultInterval()); |
} |
scoped_refptr<base::debug::ConvertableToTraceFormat> |