Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: cc/trees/thread_proxy.cc

Issue 713783002: Revert of Moving background animation ticking from LayerTreeHostImpl into the Scheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scheduler-timesource-refactor
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/thread_proxy.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/thread_proxy.h" 5 #include "cc/trees/thread_proxy.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 &completion, 169 &completion,
170 visible)); 170 visible));
171 completion.Wait(); 171 completion.Wait();
172 } 172 }
173 173
174 void ThreadProxy::SetVisibleOnImplThread(CompletionEvent* completion, 174 void ThreadProxy::SetVisibleOnImplThread(CompletionEvent* completion,
175 bool visible) { 175 bool visible) {
176 TRACE_EVENT0("cc", "ThreadProxy::SetVisibleOnImplThread"); 176 TRACE_EVENT0("cc", "ThreadProxy::SetVisibleOnImplThread");
177 impl().layer_tree_host_impl->SetVisible(visible); 177 impl().layer_tree_host_impl->SetVisible(visible);
178 impl().scheduler->SetVisible(visible); 178 impl().scheduler->SetVisible(visible);
179 UpdateBackgroundAnimateTicking();
179 completion->Signal(); 180 completion->Signal();
180 } 181 }
181 182
183 void ThreadProxy::UpdateBackgroundAnimateTicking() {
184 bool should_background_tick =
185 !impl().scheduler->WillDrawIfNeeded() &&
186 impl().layer_tree_host_impl->active_tree()->root_layer();
187 impl().layer_tree_host_impl->UpdateBackgroundAnimateTicking(
188 should_background_tick);
189 }
190
182 void ThreadProxy::DidLoseOutputSurface() { 191 void ThreadProxy::DidLoseOutputSurface() {
183 TRACE_EVENT0("cc", "ThreadProxy::DidLoseOutputSurface"); 192 TRACE_EVENT0("cc", "ThreadProxy::DidLoseOutputSurface");
184 DCHECK(IsMainThread()); 193 DCHECK(IsMainThread());
185 layer_tree_host()->DidLoseOutputSurface(); 194 layer_tree_host()->DidLoseOutputSurface();
186 195
187 { 196 {
188 DebugScopedSetMainThreadBlocked main_thread_blocked(this); 197 DebugScopedSetMainThreadBlocked main_thread_blocked(this);
189 198
190 // Return lost resources to their owners immediately. 199 // Return lost resources to their owners immediately.
191 BlockingTaskRunner::CapturePostTasks blocked( 200 BlockingTaskRunner::CapturePostTasks blocked(
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 351
343 void ThreadProxy::WillBeginImplFrame(const BeginFrameArgs& args) { 352 void ThreadProxy::WillBeginImplFrame(const BeginFrameArgs& args) {
344 impl().layer_tree_host_impl->WillBeginImplFrame(args); 353 impl().layer_tree_host_impl->WillBeginImplFrame(args);
345 } 354 }
346 355
347 void ThreadProxy::OnCanDrawStateChanged(bool can_draw) { 356 void ThreadProxy::OnCanDrawStateChanged(bool can_draw) {
348 TRACE_EVENT1( 357 TRACE_EVENT1(
349 "cc", "ThreadProxy::OnCanDrawStateChanged", "can_draw", can_draw); 358 "cc", "ThreadProxy::OnCanDrawStateChanged", "can_draw", can_draw);
350 DCHECK(IsImplThread()); 359 DCHECK(IsImplThread());
351 impl().scheduler->SetCanDraw(can_draw); 360 impl().scheduler->SetCanDraw(can_draw);
361 UpdateBackgroundAnimateTicking();
352 } 362 }
353 363
354 void ThreadProxy::NotifyReadyToActivate() { 364 void ThreadProxy::NotifyReadyToActivate() {
355 TRACE_EVENT0("cc", "ThreadProxy::NotifyReadyToActivate"); 365 TRACE_EVENT0("cc", "ThreadProxy::NotifyReadyToActivate");
356 impl().scheduler->NotifyReadyToActivate(); 366 impl().scheduler->NotifyReadyToActivate();
357 } 367 }
358 368
359 void ThreadProxy::SetNeedsCommitOnImplThread() { 369 void ThreadProxy::SetNeedsCommitOnImplThread() {
360 TRACE_EVENT0("cc", "ThreadProxy::SetNeedsCommitOnImplThread"); 370 TRACE_EVENT0("cc", "ThreadProxy::SetNeedsCommitOnImplThread");
361 DCHECK(IsImplThread()); 371 DCHECK(IsImplThread());
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 if (did_handle) 920 if (did_handle)
911 SetInputThrottledUntilCommitOnImplThread(false); 921 SetInputThrottledUntilCommitOnImplThread(false);
912 impl().layer_tree_host_impl->BeginMainFrameAborted(did_handle); 922 impl().layer_tree_host_impl->BeginMainFrameAborted(did_handle);
913 impl().scheduler->BeginMainFrameAborted(did_handle); 923 impl().scheduler->BeginMainFrameAborted(did_handle);
914 } 924 }
915 925
916 void ThreadProxy::ScheduledActionAnimate() { 926 void ThreadProxy::ScheduledActionAnimate() {
917 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionAnimate"); 927 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionAnimate");
918 DCHECK(IsImplThread()); 928 DCHECK(IsImplThread());
919 929
920 // Don't animate if there is no root layer.
921 // TODO(mithro): Both Animate and UpdateAnimationState already have a
922 // "!active_tree_->root_layer()" check?
923 if (!impl().layer_tree_host_impl->active_tree()->root_layer()) {
924 return;
925 }
926
927 impl().animation_time = 930 impl().animation_time =
928 impl().layer_tree_host_impl->CurrentBeginFrameArgs().frame_time; 931 impl().layer_tree_host_impl->CurrentBeginFrameArgs().frame_time;
929 impl().layer_tree_host_impl->Animate(impl().animation_time); 932 impl().layer_tree_host_impl->Animate(impl().animation_time);
930
931 // If animations are not visible, update the state now as
932 // ScheduledActionDrawAndSwapIfPossible will never be called.
933 if (!impl().layer_tree_host_impl->AnimationsAreVisible()) {
934 impl().layer_tree_host_impl->UpdateAnimationState(true);
935 }
936 } 933 }
937 934
938 void ThreadProxy::ScheduledActionCommit() { 935 void ThreadProxy::ScheduledActionCommit() {
939 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionCommit"); 936 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionCommit");
940 DCHECK(IsImplThread()); 937 DCHECK(IsImplThread());
941 DCHECK(IsMainThreadBlocked()); 938 DCHECK(IsMainThreadBlocked());
942 DCHECK(impl().commit_completion_event); 939 DCHECK(impl().commit_completion_event);
943 DCHECK(impl().current_resource_update_controller); 940 DCHECK(impl().current_resource_update_controller);
944 941
945 // Complete all remaining texture updates. 942 // Complete all remaining texture updates.
(...skipping 23 matching lines...) Expand all
969 impl().commit_completion_event->Signal(); 966 impl().commit_completion_event->Signal();
970 impl().commit_completion_event = NULL; 967 impl().commit_completion_event = NULL;
971 } 968 }
972 969
973 // Delay this step until afer the main thread has been released as it's 970 // Delay this step until afer the main thread has been released as it's
974 // often a good bit of work to update the tree and prepare the new frame. 971 // often a good bit of work to update the tree and prepare the new frame.
975 impl().layer_tree_host_impl->CommitComplete(); 972 impl().layer_tree_host_impl->CommitComplete();
976 973
977 SetInputThrottledUntilCommitOnImplThread(false); 974 SetInputThrottledUntilCommitOnImplThread(false);
978 975
976 UpdateBackgroundAnimateTicking();
977
979 impl().next_frame_is_newly_committed_frame = true; 978 impl().next_frame_is_newly_committed_frame = true;
980 979
981 impl().timing_history.DidCommit(); 980 impl().timing_history.DidCommit();
982 } 981 }
983 982
984 void ThreadProxy::ScheduledActionUpdateVisibleTiles() { 983 void ThreadProxy::ScheduledActionUpdateVisibleTiles() {
985 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionUpdateVisibleTiles"); 984 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionUpdateVisibleTiles");
986 DCHECK(IsImplThread()); 985 DCHECK(IsImplThread());
987 impl().layer_tree_host_impl->UpdateVisibleTiles(); 986 impl().layer_tree_host_impl->UpdateVisibleTiles();
988 } 987 }
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 DCHECK(IsImplThread()); 1345 DCHECK(IsImplThread());
1347 1346
1348 if (impl().completion_event_for_commit_held_on_tree_activation) { 1347 if (impl().completion_event_for_commit_held_on_tree_activation) {
1349 TRACE_EVENT_INSTANT0( 1348 TRACE_EVENT_INSTANT0(
1350 "cc", "ReleaseCommitbyActivation", TRACE_EVENT_SCOPE_THREAD); 1349 "cc", "ReleaseCommitbyActivation", TRACE_EVENT_SCOPE_THREAD);
1351 DCHECK(impl().layer_tree_host_impl->settings().impl_side_painting); 1350 DCHECK(impl().layer_tree_host_impl->settings().impl_side_painting);
1352 impl().completion_event_for_commit_held_on_tree_activation->Signal(); 1351 impl().completion_event_for_commit_held_on_tree_activation->Signal();
1353 impl().completion_event_for_commit_held_on_tree_activation = NULL; 1352 impl().completion_event_for_commit_held_on_tree_activation = NULL;
1354 } 1353 }
1355 1354
1355 UpdateBackgroundAnimateTicking();
1356
1356 impl().timing_history.DidActivateSyncTree(); 1357 impl().timing_history.DidActivateSyncTree();
1357 } 1358 }
1358 1359
1359 void ThreadProxy::DidManageTiles() { 1360 void ThreadProxy::DidManageTiles() {
1360 DCHECK(IsImplThread()); 1361 DCHECK(IsImplThread());
1361 impl().scheduler->DidManageTiles(); 1362 impl().scheduler->DidManageTiles();
1362 } 1363 }
1363 1364
1364 } // namespace cc 1365 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/thread_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698