| Index: cc/trees/single_thread_proxy.cc
|
| diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc
|
| index f913c1f1a011994ba0baa9674946907a784e7e26..4a079f3d47bddd43b4e5184b6d255ff2ae2367bf 100644
|
| --- a/cc/trees/single_thread_proxy.cc
|
| +++ b/cc/trees/single_thread_proxy.cc
|
| @@ -82,6 +82,12 @@ bool SingleThreadProxy::IsStarted() const {
|
| return layer_tree_host_impl_;
|
| }
|
|
|
| +bool SingleThreadProxy::CommitToActiveTree() const {
|
| + // With SingleThreadProxy we skip the pending tree and commit directly to the
|
| + // active tree.
|
| + return true;
|
| +}
|
| +
|
| void SingleThreadProxy::SetLayerTreeHostClientReady() {
|
| TRACE_EVENT0("cc", "SingleThreadProxy::SetLayerTreeHostClientReady");
|
| // Scheduling is controlled by the embedder in the single thread case, so
|
| @@ -240,8 +246,6 @@ void SingleThreadProxy::DoCommit() {
|
|
|
| layer_tree_host_->FinishCommitOnImplThread(layer_tree_host_impl_.get());
|
|
|
| - layer_tree_host_impl_->CommitComplete();
|
| -
|
| #if DCHECK_IS_ON()
|
| // In the single-threaded case, the scale and scroll deltas should never be
|
| // touched on the impl layer tree.
|
| @@ -250,18 +254,17 @@ void SingleThreadProxy::DoCommit() {
|
| DCHECK(!scroll_info->scrolls.size());
|
| DCHECK_EQ(1.f, scroll_info->page_scale_delta);
|
| #endif
|
| - }
|
|
|
| - if (layer_tree_host_->settings().impl_side_painting) {
|
| - // TODO(enne): just commit directly to the active tree.
|
| - //
|
| - // Synchronously activate during commit to satisfy any potential
|
| - // SetNextCommitWaitsForActivation calls. Unfortunately, the tree
|
| - // might not be ready to draw, so DidActivateSyncTree must set
|
| - // the flag to force the tree to not draw until textures are ready.
|
| - NotifyReadyToActivate();
|
| - } else {
|
| - CommitComplete();
|
| + if (layer_tree_host_->settings().impl_side_painting) {
|
| + // Commit goes directly to the active tree, but we need to synchronously
|
| + // "activate" the tree still during commit to satisfy any potential
|
| + // SetNextCommitWaitsForActivation calls. Unfortunately, the tree
|
| + // might not be ready to draw, so DidActivateSyncTree must set
|
| + // the flag to force the tree to not draw until textures are ready.
|
| + NotifyReadyToActivate();
|
| + } else {
|
| + CommitComplete();
|
| + }
|
| }
|
| }
|
|
|
| @@ -270,6 +273,10 @@ void SingleThreadProxy::CommitComplete() {
|
| << "Activation is expected to have synchronously occurred by now.";
|
| DCHECK(commit_blocking_task_runner_);
|
|
|
| + // Notify commit complete on the impl side after activate to satisfy any
|
| + // SetNextCommitWaitsForActivation calls.
|
| + layer_tree_host_impl_->CommitComplete();
|
| +
|
| DebugScopedSetMainThread main(this);
|
| commit_blocking_task_runner_.reset();
|
| layer_tree_host_->CommitComplete();
|
| @@ -433,8 +440,8 @@ void SingleThreadProxy::DidActivateSyncTree() {
|
| // Non-impl-side painting finishes commit in DoCommit. Impl-side painting
|
| // defers until here to simulate SetNextCommitWaitsForActivation.
|
| if (layer_tree_host_impl_->settings().impl_side_painting) {
|
| - // This is required because NotifyReadyToActivate gets called when
|
| - // the pending tree is not actually ready in the SingleThreadProxy.
|
| + // This is required because NotifyReadyToActivate gets called immediately
|
| + // after commit since single thread commits directly to the active tree.
|
| layer_tree_host_impl_->SetRequiresHighResToDraw();
|
|
|
| // Synchronously call to CommitComplete. Resetting
|
| @@ -542,7 +549,8 @@ void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) {
|
| }
|
| }
|
|
|
| -void SingleThreadProxy::AsValueInto(base::debug::TracedValue* state) const {
|
| +void SingleThreadProxy::AsValueInto(
|
| + base::trace_event::TracedValue* state) const {
|
| // The following line casts away const modifiers because it is just
|
| // setting debug state. We still want the AsValue() function and its
|
| // call chain to be const throughout.
|
|
|