Chromium Code Reviews| Index: cc/trees/single_thread_proxy.cc |
| diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc |
| index 7469f7cdce241a53d45308a282c6ce92cad5d0e1..aff9e413518b06f528df92da0786d021944c93f2 100644 |
| --- a/cc/trees/single_thread_proxy.cc |
| +++ b/cc/trees/single_thread_proxy.cc |
| @@ -63,6 +63,9 @@ void SingleThreadProxy::Start() { |
| DebugScopedSetImplThread impl(task_runner_provider_); |
| const LayerTreeSettings& settings = layer_tree_host_->GetSettings(); |
| + DCHECK(settings.single_thread_proxy_scheduler || |
| + !settings.enable_checker_imaging) |
| + << "Checker-imaging is not supported in synchronous single threaded mode"; |
| if (settings.single_thread_proxy_scheduler && !scheduler_on_impl_thread_) { |
| SchedulerSettings scheduler_settings(settings.ToSchedulerSettings()); |
| scheduler_settings.commit_to_active_tree = CommitToActiveTree(); |
| @@ -425,9 +428,8 @@ void SingleThreadProxy::OnDrawForCompositorFrameSink( |
| } |
| void SingleThreadProxy::NeedsImplSideInvalidation() { |
| - // TODO(khushalsagar): Plumb this to the scheduler when |
| - // https://codereview.chromium.org/2659123004/ lands. See crbug.com/686267. |
| - NOTIMPLEMENTED(); |
| + DCHECK(scheduler_on_impl_thread_); |
| + scheduler_on_impl_thread_->SetNeedsImplSideInvalidation(); |
| } |
| void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) { |
| @@ -604,6 +606,7 @@ void SingleThreadProxy::ScheduledActionSendBeginMainFrame( |
| task_runner_provider_->MainThreadTaskRunner()->PostTask( |
| FROM_HERE, base::Bind(&SingleThreadProxy::BeginMainFrame, |
| weak_factory_.GetWeakPtr(), begin_frame_args)); |
| + layer_tree_host_impl_->DidSendBeginMainFrameForTesting(); |
|
vmpstr
2017/02/27 21:16:57
same here
|
| } |
| void SingleThreadProxy::SendBeginMainFrameNotExpectedSoon() { |
| @@ -732,7 +735,19 @@ void SingleThreadProxy::ScheduledActionInvalidateCompositorFrameSink() { |
| } |
| void SingleThreadProxy::ScheduledActionPerformImplSideInvalidation() { |
| - NOTIMPLEMENTED(); |
| + DCHECK(scheduler_on_impl_thread_); |
| + |
| + DebugScopedSetImplThread impl(task_runner_provider_); |
| + commit_blocking_task_runner_.reset(new BlockingTaskRunner::CapturePostTasks( |
| + task_runner_provider_->blocking_main_thread_task_runner())); |
| + layer_tree_host_impl_->InvalidateContentOnImplSide(); |
| + |
| + // Invalidations go directly to the active tree, so we synchronously call |
| + // NotifyReadyToActivate to update the scheduler and LTHI state correctly. |
| + // Since in single-threaded mode the scheduler will wait for a ready to draw |
| + // signal from LTHI, the draw will remain blocked till the invalidated tiles |
| + // are ready. |
| + NotifyReadyToActivate(); |
| } |
| void SingleThreadProxy::UpdateBrowserControlsState( |