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

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

Issue 671653005: SetNeedsRedraw directly when updating a visible tile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pinchblurmerge-test: comments 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
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 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 DCHECK(IsImplThread()); 479 DCHECK(IsImplThread());
480 impl().scheduler->SetNeedsManageTiles(); 480 impl().scheduler->SetNeedsManageTiles();
481 } 481 }
482 482
483 void ThreadProxy::SetNeedsRedrawRectOnImplThread(const gfx::Rect& damage_rect) { 483 void ThreadProxy::SetNeedsRedrawRectOnImplThread(const gfx::Rect& damage_rect) {
484 DCHECK(IsImplThread()); 484 DCHECK(IsImplThread());
485 impl().layer_tree_host_impl->SetViewportDamage(damage_rect); 485 impl().layer_tree_host_impl->SetViewportDamage(damage_rect);
486 SetNeedsRedrawOnImplThread(); 486 SetNeedsRedrawOnImplThread();
487 } 487 }
488 488
489 void ThreadProxy::SetSwapUsedIncompleteTileOnImplThread(
490 bool used_incomplete_tile) {
491 DCHECK(IsImplThread());
492 if (used_incomplete_tile) {
493 TRACE_EVENT_INSTANT0("cc",
494 "ThreadProxy::SetSwapUsedIncompleteTileOnImplThread",
495 TRACE_EVENT_SCOPE_THREAD);
496 }
497 impl().scheduler->SetSwapUsedIncompleteTile(used_incomplete_tile);
498 }
499
500 void ThreadProxy::DidInitializeVisibleTileOnImplThread() {
501 TRACE_EVENT0("cc", "ThreadProxy::DidInitializeVisibleTileOnImplThread");
502 DCHECK(IsImplThread());
503 impl().scheduler->SetNeedsRedraw();
504 }
505
506 void ThreadProxy::MainThreadHasStoppedFlinging() { 489 void ThreadProxy::MainThreadHasStoppedFlinging() {
507 DCHECK(IsMainThread()); 490 DCHECK(IsMainThread());
508 Proxy::ImplThreadTaskRunner()->PostTask( 491 Proxy::ImplThreadTaskRunner()->PostTask(
509 FROM_HERE, 492 FROM_HERE,
510 base::Bind(&ThreadProxy::MainThreadHasStoppedFlingingOnImplThread, 493 base::Bind(&ThreadProxy::MainThreadHasStoppedFlingingOnImplThread,
511 impl_thread_weak_ptr_)); 494 impl_thread_weak_ptr_));
512 } 495 }
513 496
514 void ThreadProxy::MainThreadHasStoppedFlingingOnImplThread() { 497 void ThreadProxy::MainThreadHasStoppedFlingingOnImplThread() {
515 DCHECK(IsImplThread()); 498 DCHECK(IsImplThread());
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
984 967
985 SetInputThrottledUntilCommitOnImplThread(false); 968 SetInputThrottledUntilCommitOnImplThread(false);
986 969
987 UpdateBackgroundAnimateTicking(); 970 UpdateBackgroundAnimateTicking();
988 971
989 impl().next_frame_is_newly_committed_frame = true; 972 impl().next_frame_is_newly_committed_frame = true;
990 973
991 impl().timing_history.DidCommit(); 974 impl().timing_history.DidCommit();
992 } 975 }
993 976
994 void ThreadProxy::ScheduledActionUpdateVisibleTiles() {
995 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionUpdateVisibleTiles");
996 DCHECK(IsImplThread());
997 impl().layer_tree_host_impl->UpdateVisibleTiles();
998 }
999
1000 void ThreadProxy::ScheduledActionActivateSyncTree() { 977 void ThreadProxy::ScheduledActionActivateSyncTree() {
1001 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionActivateSyncTree"); 978 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionActivateSyncTree");
1002 DCHECK(IsImplThread()); 979 DCHECK(IsImplThread());
1003 impl().layer_tree_host_impl->ActivateSyncTree(); 980 impl().layer_tree_host_impl->ActivateSyncTree();
1004 } 981 }
1005 982
1006 void ThreadProxy::ScheduledActionBeginOutputSurfaceCreation() { 983 void ThreadProxy::ScheduledActionBeginOutputSurfaceCreation() {
1007 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionBeginOutputSurfaceCreation"); 984 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionBeginOutputSurfaceCreation");
1008 DCHECK(IsImplThread()); 985 DCHECK(IsImplThread());
1009 Proxy::MainThreadTaskRunner()->PostTask( 986 Proxy::MainThreadTaskRunner()->PostTask(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 &frame, impl().scheduler->LastBeginImplFrameTime()); 1027 &frame, impl().scheduler->LastBeginImplFrameTime());
1051 result = DRAW_SUCCESS; 1028 result = DRAW_SUCCESS;
1052 } else { 1029 } else {
1053 DCHECK_NE(DRAW_SUCCESS, result); 1030 DCHECK_NE(DRAW_SUCCESS, result);
1054 } 1031 }
1055 impl().layer_tree_host_impl->DidDrawAllLayers(frame); 1032 impl().layer_tree_host_impl->DidDrawAllLayers(frame);
1056 1033
1057 bool start_ready_animations = draw_frame; 1034 bool start_ready_animations = draw_frame;
1058 impl().layer_tree_host_impl->UpdateAnimationState(start_ready_animations); 1035 impl().layer_tree_host_impl->UpdateAnimationState(start_ready_animations);
1059 1036
1060 if (draw_frame) { 1037 if (draw_frame)
1061 bool did_request_swap = impl().layer_tree_host_impl->SwapBuffers(frame); 1038 impl().layer_tree_host_impl->SwapBuffers(frame);
1062
1063 // We don't know if we have incomplete tiles if we didn't actually swap.
1064 if (did_request_swap) {
1065 DCHECK(!frame.has_no_damage);
1066 SetSwapUsedIncompleteTileOnImplThread(frame.contains_incomplete_tile);
1067 }
1068 }
1069 1039
1070 // Tell the main thread that the the newly-commited frame was drawn. 1040 // Tell the main thread that the the newly-commited frame was drawn.
1071 if (impl().next_frame_is_newly_committed_frame) { 1041 if (impl().next_frame_is_newly_committed_frame) {
1072 impl().next_frame_is_newly_committed_frame = false; 1042 impl().next_frame_is_newly_committed_frame = false;
1073 Proxy::MainThreadTaskRunner()->PostTask( 1043 Proxy::MainThreadTaskRunner()->PostTask(
1074 FROM_HERE, 1044 FROM_HERE,
1075 base::Bind(&ThreadProxy::DidCommitAndDrawFrame, main_thread_weak_ptr_)); 1045 base::Bind(&ThreadProxy::DidCommitAndDrawFrame, main_thread_weak_ptr_));
1076 } 1046 }
1077 1047
1078 if (result == DRAW_SUCCESS) 1048 if (result == DRAW_SUCCESS)
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 1337
1368 impl().timing_history.DidActivateSyncTree(); 1338 impl().timing_history.DidActivateSyncTree();
1369 } 1339 }
1370 1340
1371 void ThreadProxy::DidManageTiles() { 1341 void ThreadProxy::DidManageTiles() {
1372 DCHECK(IsImplThread()); 1342 DCHECK(IsImplThread());
1373 impl().scheduler->DidManageTiles(); 1343 impl().scheduler->DidManageTiles();
1374 } 1344 }
1375 1345
1376 } // namespace cc 1346 } // namespace cc
OLDNEW
« cc/trees/layer_tree_host_unittest.cc ('K') | « cc/trees/thread_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698