| Index: cc/trees/single_thread_proxy.cc
|
| diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc
|
| index 94a6f2851c129f191776b57a31236a3970847bba..439304aa3179cf10f4ba91c255346ecdc43acb14 100644
|
| --- a/cc/trees/single_thread_proxy.cc
|
| +++ b/cc/trees/single_thread_proxy.cc
|
| @@ -101,6 +101,7 @@
|
| if (scheduler_on_impl_thread_)
|
| scheduler_on_impl_thread_->SetVisible(layer_tree_host_impl_->visible());
|
| // Changing visibility could change ShouldComposite().
|
| + UpdateBackgroundAnimateTicking();
|
| }
|
|
|
| void SingleThreadProxy::RequestNewOutputSurface() {
|
| @@ -160,24 +161,6 @@
|
| SetNeedsCommit();
|
| }
|
|
|
| -void SingleThreadProxy::DoAnimate() {
|
| - // Don't animate if there is no root layer.
|
| - // TODO(mithro): Both Animate and UpdateAnimationState already have a
|
| - // "!active_tree_->root_layer()" check?
|
| - if (!layer_tree_host_impl_->active_tree()->root_layer()) {
|
| - return;
|
| - }
|
| -
|
| - layer_tree_host_impl_->Animate(
|
| - layer_tree_host_impl_->CurrentBeginFrameArgs().frame_time);
|
| -
|
| - // If animations are not visible, update the animation state now as it
|
| - // won't happen in DoComposite.
|
| - if (!layer_tree_host_impl_->AnimationsAreVisible()) {
|
| - layer_tree_host_impl_->UpdateAnimationState(true);
|
| - }
|
| -}
|
| -
|
| void SingleThreadProxy::DoCommit() {
|
| TRACE_EVENT0("cc", "SingleThreadProxy::DoCommit");
|
| DCHECK(Proxy::IsMainThread());
|
| @@ -218,6 +201,8 @@
|
| layer_tree_host_->FinishCommitOnImplThread(layer_tree_host_impl_.get());
|
|
|
| layer_tree_host_impl_->CommitComplete();
|
| +
|
| + UpdateBackgroundAnimateTicking();
|
|
|
| #if DCHECK_IS_ON
|
| // In the single-threaded case, the scale and scroll deltas should never be
|
| @@ -337,6 +322,7 @@
|
| TRACE_EVENT1(
|
| "cc", "SingleThreadProxy::OnCanDrawStateChanged", "can_draw", can_draw);
|
| DCHECK(Proxy::IsImplThread());
|
| + UpdateBackgroundAnimateTicking();
|
| if (scheduler_on_impl_thread_)
|
| scheduler_on_impl_thread_->SetCanDraw(can_draw);
|
| }
|
| @@ -355,9 +341,7 @@
|
| }
|
|
|
| void SingleThreadProxy::SetNeedsAnimateOnImplThread() {
|
| - client_->ScheduleComposite();
|
| - if (scheduler_on_impl_thread_)
|
| - scheduler_on_impl_thread_->SetNeedsAnimate();
|
| + SetNeedsRedrawOnImplThread();
|
| }
|
|
|
| void SingleThreadProxy::SetNeedsManageTilesOnImplThread() {
|
| @@ -430,6 +414,7 @@
|
| weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| + UpdateBackgroundAnimateTicking();
|
| timing_history_.DidActivateSyncTree();
|
| }
|
|
|
| @@ -507,8 +492,6 @@
|
| layer_tree_host_impl_->SynchronouslyInitializeAllTiles();
|
| }
|
|
|
| - DoAnimate();
|
| -
|
| LayerTreeHostImpl::FrameData frame;
|
| DoComposite(frame_begin_time, &frame);
|
|
|
| @@ -548,6 +531,12 @@
|
| DCHECK(Proxy::IsImplThread());
|
| return layer_tree_host_impl_->visible() &&
|
| layer_tree_host_impl_->CanDraw();
|
| +}
|
| +
|
| +void SingleThreadProxy::UpdateBackgroundAnimateTicking() {
|
| + DCHECK(Proxy::IsImplThread());
|
| + layer_tree_host_impl_->UpdateBackgroundAnimateTicking(
|
| + !ShouldComposite() && layer_tree_host_impl_->active_tree()->root_layer());
|
| }
|
|
|
| void SingleThreadProxy::ScheduleRequestNewOutputSurface() {
|
| @@ -577,10 +566,15 @@
|
| // DrawLayers() depends on the result of PrepareToDraw(), it is guarded on
|
| // CanDraw() as well.
|
| if (!ShouldComposite()) {
|
| + UpdateBackgroundAnimateTicking();
|
| return DRAW_ABORTED_CANT_DRAW;
|
| }
|
|
|
| timing_history_.DidStartDrawing();
|
| +
|
| + layer_tree_host_impl_->Animate(
|
| + layer_tree_host_impl_->CurrentBeginFrameArgs().frame_time);
|
| + UpdateBackgroundAnimateTicking();
|
|
|
| draw_result = layer_tree_host_impl_->PrepareToDraw(frame);
|
| draw_frame = draw_result == DRAW_SUCCESS;
|
| @@ -742,8 +736,8 @@
|
|
|
| void SingleThreadProxy::ScheduledActionAnimate() {
|
| TRACE_EVENT0("cc", "ScheduledActionAnimate");
|
| - DebugScopedSetImplThread impl(this);
|
| - DoAnimate();
|
| + layer_tree_host_impl_->Animate(
|
| + layer_tree_host_impl_->CurrentBeginFrameArgs().frame_time);
|
| }
|
|
|
| void SingleThreadProxy::ScheduledActionUpdateVisibleTiles() {
|
|
|