Index: cc/trees/single_thread_proxy.cc |
diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc |
index 21c9d604e5ec1aa613207fcf84706d4d8a9914ab..488bba48a445c84c966349def4a8340cfa25ac8d 100644 |
--- a/cc/trees/single_thread_proxy.cc |
+++ b/cc/trees/single_thread_proxy.cc |
@@ -45,6 +45,7 @@ |
next_frame_is_newly_committed_frame_(false), |
inside_draw_(false), |
defer_commits_(false), |
+ commit_was_deferred_(false), |
commit_requested_(false), |
inside_synchronous_composite_(false), |
output_surface_creation_requested_(false), |
@@ -311,7 +312,10 @@ |
TRACE_EVENT_ASYNC_END0("cc", "SingleThreadProxy::SetDeferCommits", this); |
defer_commits_ = defer_commits; |
- scheduler_on_impl_thread_->SetDeferCommits(defer_commits); |
+ if (!defer_commits_ && commit_was_deferred_) { |
+ commit_was_deferred_ = false; |
+ BeginMainFrame(); |
+ } |
} |
bool SingleThreadProxy::CommitRequested() const { |
@@ -672,10 +676,9 @@ |
void SingleThreadProxy::BeginMainFrame() { |
if (defer_commits_) { |
- TRACE_EVENT_INSTANT0("cc", "EarlyOut_DeferCommit", |
- TRACE_EVENT_SCOPE_THREAD); |
- BeginMainFrameAbortedOnImplThread( |
- CommitEarlyOutReason::ABORTED_DEFERRED_COMMIT); |
+ DCHECK(!commit_was_deferred_); |
+ commit_was_deferred_ = true; |
+ layer_tree_host_->DidDeferCommit(); |
return; |
} |