| Index: cc/trees/single_thread_proxy.cc
|
| diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc
|
| index 5a40d7e5039dc38c3e92b2a7c1ed0257391b9824..98bcd746f325f899ff55d6a97b679fb821664151 100644
|
| --- a/cc/trees/single_thread_proxy.cc
|
| +++ b/cc/trees/single_thread_proxy.cc
|
| @@ -44,7 +44,6 @@ SingleThreadProxy::SingleThreadProxy(
|
| 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),
|
| @@ -300,10 +299,12 @@ void SingleThreadProxy::SetDeferCommits(bool defer_commits) {
|
| TRACE_EVENT_ASYNC_END0("cc", "SingleThreadProxy::SetDeferCommits", this);
|
|
|
| defer_commits_ = defer_commits;
|
| - if (!defer_commits_ && commit_was_deferred_) {
|
| - commit_was_deferred_ = false;
|
| - BeginMainFrame();
|
| - }
|
| + scheduler_on_impl_thread_->SetDeferCommits(defer_commits);
|
| +
|
| + // When defer commit is turned off, we should start new BeginMainFrame to
|
| + // handle previous deferred BeginMainFrame.
|
| + if (!defer_commits)
|
| + SetNeedsCommit();
|
| }
|
|
|
| bool SingleThreadProxy::CommitRequested() const {
|
| @@ -660,9 +661,9 @@ void SingleThreadProxy::ScheduledActionSendBeginMainFrame() {
|
|
|
| void SingleThreadProxy::BeginMainFrame() {
|
| if (defer_commits_) {
|
| - DCHECK(!commit_was_deferred_);
|
| - commit_was_deferred_ = true;
|
| - layer_tree_host_->DidDeferCommit();
|
| + TRACE_EVENT_INSTANT0("cc", "EarlyOut_DeferCommits",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + BeginMainFrameAbortedOnImplThread();
|
| return;
|
| }
|
|
|
|
|