diff options
Diffstat (limited to 'cc/trees/thread_proxy.cc')
-rw-r--r-- | cc/trees/thread_proxy.cc | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc index c343c97..88f1314 100644 --- a/cc/trees/thread_proxy.cc +++ b/cc/trees/thread_proxy.cc @@ -452,13 +452,16 @@ void ThreadProxy::SetDeferCommits(bool defer_commits) { else TRACE_EVENT_ASYNC_END0("cc", "ThreadProxy::SetDeferCommits", this); - if (!main().defer_commits && main().pending_deferred_commit) { - Proxy::MainThreadTaskRunner()->PostTask( - FROM_HERE, - base::Bind(&ThreadProxy::BeginMainFrame, - main_thread_weak_ptr_, - base::Passed(&main().pending_deferred_commit))); - } + Proxy::ImplThreadTaskRunner()->PostTask( + FROM_HERE, + base::Bind(&ThreadProxy::SetDeferCommitsOnImplThread, + impl_thread_weak_ptr_, + defer_commits)); +} + +void ThreadProxy::SetDeferCommitsOnImplThread(bool defer_commits) const { + DCHECK(IsImplThread()); + impl().scheduler->SetDeferCommits(defer_commits); } bool ThreadProxy::CommitRequested() const { @@ -701,10 +704,12 @@ void ThreadProxy::BeginMainFrame( DCHECK(IsMainThread()); if (main().defer_commits) { - main().pending_deferred_commit = begin_main_frame_state.Pass(); - layer_tree_host()->DidDeferCommit(); - TRACE_EVENT_INSTANT0( - "cc", "EarlyOut_DeferCommits", TRACE_EVENT_SCOPE_THREAD); + TRACE_EVENT_INSTANT0("cc", "EarlyOut_DeferCommit", + TRACE_EVENT_SCOPE_THREAD); + Proxy::ImplThreadTaskRunner()->PostTask( + FROM_HERE, base::Bind(&ThreadProxy::BeginMainFrameAbortedOnImplThread, + impl_thread_weak_ptr_, + CommitEarlyOutReason::ABORTED_DEFERRED_COMMIT)); return; } |