Chromium Code Reviews| Index: cc/trees/thread_proxy.cc |
| diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc |
| index 14e218194e026d57cf300dd7a41a58ac21cb5b8b..373eec01b97d5f740414cc7fd71c9f7e9b0739de 100644 |
| --- a/cc/trees/thread_proxy.cc |
| +++ b/cc/trees/thread_proxy.cc |
| @@ -176,18 +176,9 @@ void ThreadProxy::SetVisibleOnImplThread(CompletionEvent* completion, |
| TRACE_EVENT0("cc", "ThreadProxy::SetVisibleOnImplThread"); |
| impl().layer_tree_host_impl->SetVisible(visible); |
| impl().scheduler->SetVisible(visible); |
| - UpdateBackgroundAnimateTicking(); |
| completion->Signal(); |
| } |
| -void ThreadProxy::UpdateBackgroundAnimateTicking() { |
| - bool should_background_tick = |
| - !impl().scheduler->WillDrawIfNeeded() && |
| - impl().layer_tree_host_impl->active_tree()->root_layer(); |
| - impl().layer_tree_host_impl->UpdateBackgroundAnimateTicking( |
| - should_background_tick); |
| -} |
| - |
| void ThreadProxy::DidLoseOutputSurface() { |
| TRACE_EVENT0("cc", "ThreadProxy::DidLoseOutputSurface"); |
| DCHECK(IsMainThread()); |
| @@ -358,7 +349,6 @@ void ThreadProxy::OnCanDrawStateChanged(bool can_draw) { |
| "cc", "ThreadProxy::OnCanDrawStateChanged", "can_draw", can_draw); |
| DCHECK(IsImplThread()); |
| impl().scheduler->SetCanDraw(can_draw); |
| - UpdateBackgroundAnimateTicking(); |
| } |
| void ThreadProxy::NotifyReadyToActivate() { |
| @@ -933,9 +923,22 @@ void ThreadProxy::ScheduledActionAnimate() { |
| TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionAnimate"); |
| DCHECK(IsImplThread()); |
| + // Don't animate if there is no root layer. |
| + // TODO(mithro): Both Animate and UpdateAnimationState already have a |
| + // "!active_tree_->root_layer()" check? |
| + if (!impl().layer_tree_host_impl->active_tree()->root_layer()) { |
| + return; |
| + } |
| + |
| impl().animation_time = |
| impl().layer_tree_host_impl->CurrentBeginFrameArgs().frame_time; |
| impl().layer_tree_host_impl->Animate(impl().animation_time); |
| + |
| + // If animations are not visible, update the state now as |
| + // ScheduledActionDrawAndSwapIfPossible will never be called. |
| + if (!impl().layer_tree_host_impl->AnimationsAreVisible()) { |
|
brianderson
2014/11/04 18:54:38
Should we make this part of the aborted draw and s
mithro-old
2014/11/04 22:16:50
As far as I can tell, ScheduledActionDrawAndSwapIf
brianderson
2014/11/04 23:32:19
Sure, can you open a bug?
mithro-old
2014/11/05 00:02:36
Will do when this code lands (incase this changes)
|
| + impl().layer_tree_host_impl->UpdateAnimationState(true); |
| + } |
| } |
| void ThreadProxy::ScheduledActionCommit() { |
| @@ -979,8 +982,6 @@ void ThreadProxy::ScheduledActionCommit() { |
| SetInputThrottledUntilCommitOnImplThread(false); |
| - UpdateBackgroundAnimateTicking(); |
| - |
| impl().next_frame_is_newly_committed_frame = true; |
| impl().timing_history.DidCommit(); |
| @@ -1358,8 +1359,6 @@ void ThreadProxy::DidActivateSyncTree() { |
| impl().completion_event_for_commit_held_on_tree_activation = NULL; |
| } |
| - UpdateBackgroundAnimateTicking(); |
| - |
| impl().timing_history.DidActivateSyncTree(); |
| } |