Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 474 void ThreadProxy::SetDeferCommits(bool defer_commits) { | 474 void ThreadProxy::SetDeferCommits(bool defer_commits) { |
| 475 DCHECK(IsMainThread()); | 475 DCHECK(IsMainThread()); |
| 476 DCHECK_NE(main().defer_commits, defer_commits); | 476 DCHECK_NE(main().defer_commits, defer_commits); |
| 477 main().defer_commits = defer_commits; | 477 main().defer_commits = defer_commits; |
| 478 | 478 |
| 479 if (main().defer_commits) | 479 if (main().defer_commits) |
| 480 TRACE_EVENT_ASYNC_BEGIN0("cc", "ThreadProxy::SetDeferCommits", this); | 480 TRACE_EVENT_ASYNC_BEGIN0("cc", "ThreadProxy::SetDeferCommits", this); |
| 481 else | 481 else |
| 482 TRACE_EVENT_ASYNC_END0("cc", "ThreadProxy::SetDeferCommits", this); | 482 TRACE_EVENT_ASYNC_END0("cc", "ThreadProxy::SetDeferCommits", this); |
| 483 | 483 |
| 484 if (!main().defer_commits && main().pending_deferred_commit) | 484 Proxy::ImplThreadTaskRunner()->PostTask( |
| 485 Proxy::MainThreadTaskRunner()->PostTask( | 485 FROM_HERE, |
| 486 FROM_HERE, | 486 base::Bind(&ThreadProxy::SetDeferCommitsOnImplThread, |
| 487 base::Bind(&ThreadProxy::BeginMainFrame, | 487 impl_thread_weak_ptr_, |
| 488 main_thread_weak_ptr_, | 488 defer_commits)); |
| 489 base::Passed(&main().pending_deferred_commit))); | 489 } |
| 490 | |
| 491 void ThreadProxy::SetDeferCommitsOnImplThread(bool defer_commits) const { | |
| 492 DCHECK(IsImplThread()); | |
| 493 impl().scheduler->SetDeferCommits(defer_commits); | |
| 490 } | 494 } |
| 491 | 495 |
| 492 bool ThreadProxy::CommitRequested() const { | 496 bool ThreadProxy::CommitRequested() const { |
| 493 DCHECK(IsMainThread()); | 497 DCHECK(IsMainThread()); |
| 494 return main().commit_requested; | 498 return main().commit_requested; |
| 495 } | 499 } |
| 496 | 500 |
| 497 bool ThreadProxy::BeginMainFrameRequested() const { | 501 bool ThreadProxy::BeginMainFrameRequested() const { |
| 498 DCHECK(IsMainThread()); | 502 DCHECK(IsMainThread()); |
| 499 return main().commit_request_sent_to_impl_thread; | 503 return main().commit_request_sent_to_impl_thread; |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 729 impl().layer_tree_host_id); | 733 impl().layer_tree_host_id); |
| 730 impl().timing_history.DidBeginMainFrame(); | 734 impl().timing_history.DidBeginMainFrame(); |
| 731 } | 735 } |
| 732 | 736 |
| 733 void ThreadProxy::BeginMainFrame( | 737 void ThreadProxy::BeginMainFrame( |
| 734 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) { | 738 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) { |
| 735 TRACE_EVENT0("cc", "ThreadProxy::BeginMainFrame"); | 739 TRACE_EVENT0("cc", "ThreadProxy::BeginMainFrame"); |
| 736 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("cc.BeginMainFrame"); | 740 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("cc.BeginMainFrame"); |
| 737 DCHECK(IsMainThread()); | 741 DCHECK(IsMainThread()); |
| 738 | 742 |
| 739 if (main().defer_commits) { | |
| 740 main().pending_deferred_commit = begin_main_frame_state.Pass(); | |
| 741 layer_tree_host()->DidDeferCommit(); | |
| 742 TRACE_EVENT_INSTANT0( | |
| 743 "cc", "EarlyOut_DeferCommits", TRACE_EVENT_SCOPE_THREAD); | |
| 744 return; | |
| 745 } | |
| 746 | |
| 747 // If the commit finishes, LayerTreeHost will transfer its swap promises to | 743 // If the commit finishes, LayerTreeHost will transfer its swap promises to |
| 748 // LayerTreeImpl. The destructor of SwapPromiseChecker checks LayerTressHost's | 744 // LayerTreeImpl. The destructor of SwapPromiseChecker checks LayerTressHost's |
| 749 // swap promises. | 745 // swap promises. |
| 750 SwapPromiseChecker swap_promise_checker(layer_tree_host()); | 746 SwapPromiseChecker swap_promise_checker(layer_tree_host()); |
| 751 | 747 |
| 752 main().commit_requested = false; | 748 main().commit_requested = false; |
| 753 main().commit_request_sent_to_impl_thread = false; | 749 main().commit_request_sent_to_impl_thread = false; |
| 754 main().animate_requested = false; | 750 main().animate_requested = false; |
| 755 | 751 |
| 752 if (main().defer_commits) { | |
| 753 layer_tree_host()->DidDeferCommit(); | |
| 754 TRACE_EVENT_INSTANT0( | |
| 755 "cc", "EarlyOut_DeferCommits", TRACE_EVENT_SCOPE_THREAD); | |
| 756 bool did_handle = false; | |
| 757 Proxy::ImplThreadTaskRunner()->PostTask( | |
| 758 FROM_HERE, | |
| 759 base::Bind(&ThreadProxy::BeginMainFrameAbortedOnImplThread, | |
|
brianderson
2014/06/17 15:57:01
Would it make sense to reorganize the BeginMainFra
simonhong
2014/06/18 21:52:05
Done.
| |
| 760 impl_thread_weak_ptr_, | |
| 761 did_handle)); | |
| 762 return; | |
| 763 } | |
| 764 | |
| 756 if (!layer_tree_host()->visible()) { | 765 if (!layer_tree_host()->visible()) { |
| 757 TRACE_EVENT_INSTANT0("cc", "EarlyOut_NotVisible", TRACE_EVENT_SCOPE_THREAD); | 766 TRACE_EVENT_INSTANT0("cc", "EarlyOut_NotVisible", TRACE_EVENT_SCOPE_THREAD); |
| 758 bool did_handle = false; | 767 bool did_handle = false; |
| 759 Proxy::ImplThreadTaskRunner()->PostTask( | 768 Proxy::ImplThreadTaskRunner()->PostTask( |
| 760 FROM_HERE, | 769 FROM_HERE, |
| 761 base::Bind(&ThreadProxy::BeginMainFrameAbortedOnImplThread, | 770 base::Bind(&ThreadProxy::BeginMainFrameAbortedOnImplThread, |
| 762 impl_thread_weak_ptr_, | 771 impl_thread_weak_ptr_, |
| 763 did_handle)); | 772 did_handle)); |
| 764 return; | 773 return; |
| 765 } | 774 } |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1455 | 1464 |
| 1456 impl().timing_history.DidActivatePendingTree(); | 1465 impl().timing_history.DidActivatePendingTree(); |
| 1457 } | 1466 } |
| 1458 | 1467 |
| 1459 void ThreadProxy::DidManageTiles() { | 1468 void ThreadProxy::DidManageTiles() { |
| 1460 DCHECK(IsImplThread()); | 1469 DCHECK(IsImplThread()); |
| 1461 impl().scheduler->DidManageTiles(); | 1470 impl().scheduler->DidManageTiles(); |
| 1462 } | 1471 } |
| 1463 | 1472 |
| 1464 } // namespace cc | 1473 } // namespace cc |
| OLD | NEW |