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

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

Issue 559793002: cc: Add logging to help pinpoint lost SetNeedsCommit (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months 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 | « no previous file | 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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 252
253 void ThreadProxy::SetRendererCapabilitiesMainThreadCopy( 253 void ThreadProxy::SetRendererCapabilitiesMainThreadCopy(
254 const RendererCapabilities& capabilities) { 254 const RendererCapabilities& capabilities) {
255 main().renderer_capabilities_main_thread_copy = capabilities; 255 main().renderer_capabilities_main_thread_copy = capabilities;
256 } 256 }
257 257
258 void ThreadProxy::SendCommitRequestToImplThreadIfNeeded() { 258 void ThreadProxy::SendCommitRequestToImplThreadIfNeeded() {
259 DCHECK(IsMainThread()); 259 DCHECK(IsMainThread());
260 if (main().commit_request_sent_to_impl_thread) 260 if (main().commit_request_sent_to_impl_thread)
261 return; 261 return;
262 VLOG(2) << "ThreadProxy::SendCommitRequestToImplThreadIfNeeded";
Ken Russell (switch to Gerrit) 2014/09/10 00:43:41 Would it be better to log earlier and include the
262 main().commit_request_sent_to_impl_thread = true; 263 main().commit_request_sent_to_impl_thread = true;
263 Proxy::ImplThreadTaskRunner()->PostTask( 264 Proxy::ImplThreadTaskRunner()->PostTask(
264 FROM_HERE, 265 FROM_HERE,
265 base::Bind(&ThreadProxy::SetNeedsCommitOnImplThread, 266 base::Bind(&ThreadProxy::SetNeedsCommitOnImplThread,
266 impl_thread_weak_ptr_)); 267 impl_thread_weak_ptr_));
267 } 268 }
268 269
269 const RendererCapabilities& ThreadProxy::GetRendererCapabilities() const { 270 const RendererCapabilities& ThreadProxy::GetRendererCapabilities() const {
270 DCHECK(IsMainThread()); 271 DCHECK(IsMainThread());
271 DCHECK(!layer_tree_host()->output_surface_lost()); 272 DCHECK(!layer_tree_host()->output_surface_lost());
272 return main().renderer_capabilities_main_thread_copy; 273 return main().renderer_capabilities_main_thread_copy;
273 } 274 }
274 275
275 void ThreadProxy::SetNeedsAnimate() { 276 void ThreadProxy::SetNeedsAnimate() {
276 DCHECK(IsMainThread()); 277 DCHECK(IsMainThread());
277 if (main().animate_requested) 278 if (main().animate_requested)
278 return; 279 return;
279 280
280 TRACE_EVENT0("cc", "ThreadProxy::SetNeedsAnimate"); 281 TRACE_EVENT0("cc", "ThreadProxy::SetNeedsAnimate");
282 VLOG(2) << "ThreadProxy::SetNeedsAnimate";
Ken Russell (switch to Gerrit) 2014/09/10 00:43:41 Same question about logging earlier here.
281 main().animate_requested = true; 283 main().animate_requested = true;
282 SendCommitRequestToImplThreadIfNeeded(); 284 SendCommitRequestToImplThreadIfNeeded();
283 } 285 }
284 286
285 void ThreadProxy::SetNeedsUpdateLayers() { 287 void ThreadProxy::SetNeedsUpdateLayers() {
286 DCHECK(IsMainThread()); 288 DCHECK(IsMainThread());
287 289
288 if (main().commit_request_sent_to_impl_thread) 290 if (main().commit_request_sent_to_impl_thread)
289 return; 291 return;
290 TRACE_EVENT0("cc", "ThreadProxy::SetNeedsUpdateLayers"); 292 TRACE_EVENT0("cc", "ThreadProxy::SetNeedsUpdateLayers");
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 UpdateBackgroundAnimateTicking(); 375 UpdateBackgroundAnimateTicking();
374 } 376 }
375 377
376 void ThreadProxy::NotifyReadyToActivate() { 378 void ThreadProxy::NotifyReadyToActivate() {
377 TRACE_EVENT0("cc", "ThreadProxy::NotifyReadyToActivate"); 379 TRACE_EVENT0("cc", "ThreadProxy::NotifyReadyToActivate");
378 impl().scheduler->NotifyReadyToActivate(); 380 impl().scheduler->NotifyReadyToActivate();
379 } 381 }
380 382
381 void ThreadProxy::SetNeedsCommitOnImplThread() { 383 void ThreadProxy::SetNeedsCommitOnImplThread() {
382 TRACE_EVENT0("cc", "ThreadProxy::SetNeedsCommitOnImplThread"); 384 TRACE_EVENT0("cc", "ThreadProxy::SetNeedsCommitOnImplThread");
385 VLOG(2) << "ThreadProxy::SetNeedsCommitOnImplThread";
383 DCHECK(IsImplThread()); 386 DCHECK(IsImplThread());
384 impl().scheduler->SetNeedsCommit(); 387 impl().scheduler->SetNeedsCommit();
385 } 388 }
386 389
387 void ThreadProxy::PostAnimationEventsToMainThreadOnImplThread( 390 void ThreadProxy::PostAnimationEventsToMainThreadOnImplThread(
388 scoped_ptr<AnimationEventsVector> events) { 391 scoped_ptr<AnimationEventsVector> events) {
389 TRACE_EVENT0("cc", 392 TRACE_EVENT0("cc",
390 "ThreadProxy::PostAnimationEventsToMainThreadOnImplThread"); 393 "ThreadProxy::PostAnimationEventsToMainThreadOnImplThread");
391 DCHECK(IsImplThread()); 394 DCHECK(IsImplThread());
392 Proxy::MainThreadTaskRunner()->PostTask( 395 Proxy::MainThreadTaskRunner()->PostTask(
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 // Do not notify the impl thread of commit requests that occur during 768 // Do not notify the impl thread of commit requests that occur during
766 // the apply/animate/layout part of the BeginMainFrameAndCommit process since 769 // the apply/animate/layout part of the BeginMainFrameAndCommit process since
767 // those commit requests will get painted immediately. Once we have done 770 // those commit requests will get painted immediately. Once we have done
768 // the paint, main().commit_requested will be set to false to allow new commit 771 // the paint, main().commit_requested will be set to false to allow new commit
769 // requests to be scheduled. 772 // requests to be scheduled.
770 // On the other hand, the animate_requested flag should remain cleared 773 // On the other hand, the animate_requested flag should remain cleared
771 // here so that any animation requests generated by the apply or animate 774 // here so that any animation requests generated by the apply or animate
772 // callbacks will trigger another frame. 775 // callbacks will trigger another frame.
773 main().commit_requested = true; 776 main().commit_requested = true;
774 main().commit_request_sent_to_impl_thread = true; 777 main().commit_request_sent_to_impl_thread = true;
778 VLOG(2) << "ThreadProxy::BeginMainFrame: Commit requests silenced.";
775 779
776 layer_tree_host()->ApplyScrollAndScale( 780 layer_tree_host()->ApplyScrollAndScale(
777 begin_main_frame_state->scroll_info.get()); 781 begin_main_frame_state->scroll_info.get());
778 782
779 layer_tree_host()->WillBeginMainFrame(); 783 layer_tree_host()->WillBeginMainFrame();
780 784
781 layer_tree_host()->BeginMainFrame(begin_main_frame_state->begin_frame_args); 785 layer_tree_host()->BeginMainFrame(begin_main_frame_state->begin_frame_args);
782 layer_tree_host()->AnimateLayers( 786 layer_tree_host()->AnimateLayers(
783 begin_main_frame_state->begin_frame_args.frame_time); 787 begin_main_frame_state->begin_frame_args.frame_time);
784 blocked_main().last_monotonic_frame_begin_time = 788 blocked_main().last_monotonic_frame_begin_time =
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 823
820 layer_tree_host()->WillCommit(); 824 layer_tree_host()->WillCommit();
821 825
822 // Before calling animate, we set main().animate_requested to false. If it is 826 // Before calling animate, we set main().animate_requested to false. If it is
823 // true now, it means SetNeedAnimate was called again, but during a state when 827 // true now, it means SetNeedAnimate was called again, but during a state when
824 // main().commit_request_sent_to_impl_thread = true. We need to force that 828 // main().commit_request_sent_to_impl_thread = true. We need to force that
825 // call to happen again now so that the commit request is sent to the impl 829 // call to happen again now so that the commit request is sent to the impl
826 // thread. 830 // thread.
827 if (main().animate_requested) { 831 if (main().animate_requested) {
828 // Forces SetNeedsAnimate to consider posting a commit task. 832 // Forces SetNeedsAnimate to consider posting a commit task.
833 VLOG(2) << "ThreadProxy::BeginMainFrame: RAF requested.";
829 main().animate_requested = false; 834 main().animate_requested = false;
830 SetNeedsAnimate(); 835 SetNeedsAnimate();
836 } else {
837 VLOG(2) << "ThreadProxy::BeginMainFrame: RAF NOT requested.";
831 } 838 }
832 839
833 if (!updated && can_cancel_this_commit) { 840 if (!updated && can_cancel_this_commit) {
834 TRACE_EVENT_INSTANT0("cc", "EarlyOut_NoUpdates", TRACE_EVENT_SCOPE_THREAD); 841 TRACE_EVENT_INSTANT0("cc", "EarlyOut_NoUpdates", TRACE_EVENT_SCOPE_THREAD);
835 VLOG(2) << "ThreadProxy::BeginMainFrame: EarlyOut_NoUpdates"; 842 VLOG(2) << "ThreadProxy::BeginMainFrame: EarlyOut_NoUpdates";
836 bool did_handle = true; 843 bool did_handle = true;
837 Proxy::ImplThreadTaskRunner()->PostTask( 844 Proxy::ImplThreadTaskRunner()->PostTask(
838 FROM_HERE, 845 FROM_HERE,
839 base::Bind(&ThreadProxy::BeginMainFrameAbortedOnImplThread, 846 base::Bind(&ThreadProxy::BeginMainFrameAbortedOnImplThread,
840 impl_thread_weak_ptr_, 847 impl_thread_weak_ptr_,
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
1410 1417
1411 impl().timing_history.DidActivateSyncTree(); 1418 impl().timing_history.DidActivateSyncTree();
1412 } 1419 }
1413 1420
1414 void ThreadProxy::DidManageTiles() { 1421 void ThreadProxy::DidManageTiles() {
1415 DCHECK(IsImplThread()); 1422 DCHECK(IsImplThread());
1416 impl().scheduler->DidManageTiles(); 1423 impl().scheduler->DidManageTiles();
1417 } 1424 }
1418 1425
1419 } // namespace cc 1426 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698