| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/proxy_main.h" | 5 #include "cc/trees/proxy_main.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
| 11 #include "base/trace_event/trace_event_argument.h" | 11 #include "base/trace_event/trace_event_argument.h" |
| 12 #include "base/trace_event/trace_event_synthetic_delay.h" | 12 #include "base/trace_event/trace_event_synthetic_delay.h" |
| 13 #include "cc/animation/animation_events.h" | 13 #include "cc/animation/animation_events.h" |
| 14 #include "cc/debug/benchmark_instrumentation.h" | 14 #include "cc/debug/benchmark_instrumentation.h" |
| 15 #include "cc/debug/devtools_instrumentation.h" | 15 #include "cc/debug/devtools_instrumentation.h" |
| 16 #include "cc/output/output_surface.h" | 16 #include "cc/output/compositor_frame_sink.h" |
| 17 #include "cc/output/swap_promise.h" | 17 #include "cc/output/swap_promise.h" |
| 18 #include "cc/resources/ui_resource_manager.h" | 18 #include "cc/resources/ui_resource_manager.h" |
| 19 #include "cc/trees/blocking_task_runner.h" | 19 #include "cc/trees/blocking_task_runner.h" |
| 20 #include "cc/trees/layer_tree_host.h" | 20 #include "cc/trees/layer_tree_host.h" |
| 21 #include "cc/trees/remote_channel_main.h" | 21 #include "cc/trees/remote_channel_main.h" |
| 22 #include "cc/trees/scoped_abort_remaining_swap_promises.h" | 22 #include "cc/trees/scoped_abort_remaining_swap_promises.h" |
| 23 #include "cc/trees/threaded_channel.h" | 23 #include "cc/trees/threaded_channel.h" |
| 24 | 24 |
| 25 namespace cc { | 25 namespace cc { |
| 26 | 26 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 DCHECK(IsMainThread()); | 87 DCHECK(IsMainThread()); |
| 88 layer_tree_host_->DidCommitAndDrawFrame(); | 88 layer_tree_host_->DidCommitAndDrawFrame(); |
| 89 } | 89 } |
| 90 | 90 |
| 91 void ProxyMain::SetAnimationEvents(std::unique_ptr<AnimationEvents> events) { | 91 void ProxyMain::SetAnimationEvents(std::unique_ptr<AnimationEvents> events) { |
| 92 TRACE_EVENT0("cc", "ProxyMain::SetAnimationEvents"); | 92 TRACE_EVENT0("cc", "ProxyMain::SetAnimationEvents"); |
| 93 DCHECK(IsMainThread()); | 93 DCHECK(IsMainThread()); |
| 94 layer_tree_host_->SetAnimationEvents(std::move(events)); | 94 layer_tree_host_->SetAnimationEvents(std::move(events)); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void ProxyMain::DidLoseOutputSurface() { | 97 void ProxyMain::DidLoseCompositorFrameSink() { |
| 98 TRACE_EVENT0("cc", "ProxyMain::DidLoseOutputSurface"); | 98 TRACE_EVENT0("cc", "ProxyMain::DidLoseCompositorFrameSink"); |
| 99 DCHECK(IsMainThread()); | 99 DCHECK(IsMainThread()); |
| 100 layer_tree_host_->DidLoseOutputSurface(); | 100 layer_tree_host_->DidLoseCompositorFrameSink(); |
| 101 } | 101 } |
| 102 | 102 |
| 103 void ProxyMain::RequestNewOutputSurface() { | 103 void ProxyMain::RequestNewCompositorFrameSink() { |
| 104 TRACE_EVENT0("cc", "ProxyMain::RequestNewOutputSurface"); | 104 TRACE_EVENT0("cc", "ProxyMain::RequestNewCompositorFrameSink"); |
| 105 DCHECK(IsMainThread()); | 105 DCHECK(IsMainThread()); |
| 106 layer_tree_host_->RequestNewOutputSurface(); | 106 layer_tree_host_->RequestNewCompositorFrameSink(); |
| 107 } | 107 } |
| 108 | 108 |
| 109 void ProxyMain::DidInitializeOutputSurface(bool success) { | 109 void ProxyMain::DidInitializeCompositorFrameSink(bool success) { |
| 110 TRACE_EVENT0("cc", "ProxyMain::DidInitializeOutputSurface"); | 110 TRACE_EVENT0("cc", "ProxyMain::DidInitializeCompositorFrameSink"); |
| 111 DCHECK(IsMainThread()); | 111 DCHECK(IsMainThread()); |
| 112 | 112 |
| 113 if (!success) | 113 if (!success) |
| 114 layer_tree_host_->DidFailToInitializeOutputSurface(); | 114 layer_tree_host_->DidFailToInitializeCompositorFrameSink(); |
| 115 else | 115 else |
| 116 layer_tree_host_->DidInitializeOutputSurface(); | 116 layer_tree_host_->DidInitializeCompositorFrameSink(); |
| 117 } | 117 } |
| 118 | 118 |
| 119 void ProxyMain::DidCompletePageScaleAnimation() { | 119 void ProxyMain::DidCompletePageScaleAnimation() { |
| 120 DCHECK(IsMainThread()); | 120 DCHECK(IsMainThread()); |
| 121 layer_tree_host_->DidCompletePageScaleAnimation(); | 121 layer_tree_host_->DidCompletePageScaleAnimation(); |
| 122 } | 122 } |
| 123 | 123 |
| 124 void ProxyMain::BeginMainFrame( | 124 void ProxyMain::BeginMainFrame( |
| 125 std::unique_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) { | 125 std::unique_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) { |
| 126 benchmark_instrumentation::ScopedBeginFrameTask begin_frame_task( | 126 benchmark_instrumentation::ScopedBeginFrameTask begin_frame_task( |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 DCHECK(IsMainThread()); | 245 DCHECK(IsMainThread()); |
| 246 return started_; | 246 return started_; |
| 247 } | 247 } |
| 248 | 248 |
| 249 bool ProxyMain::CommitToActiveTree() const { | 249 bool ProxyMain::CommitToActiveTree() const { |
| 250 // With ProxyMain, we use a pending tree and activate it once it's ready to | 250 // With ProxyMain, we use a pending tree and activate it once it's ready to |
| 251 // draw to allow input to modify the active tree and draw during raster. | 251 // draw to allow input to modify the active tree and draw during raster. |
| 252 return false; | 252 return false; |
| 253 } | 253 } |
| 254 | 254 |
| 255 void ProxyMain::SetOutputSurface(OutputSurface* output_surface) { | 255 void ProxyMain::SetCompositorFrameSink( |
| 256 channel_main_->InitializeOutputSurfaceOnImpl(output_surface); | 256 CompositorFrameSink* compositor_frame_sink) { |
| 257 channel_main_->InitializeCompositorFrameSinkOnImpl(compositor_frame_sink); |
| 257 } | 258 } |
| 258 | 259 |
| 259 void ProxyMain::SetVisible(bool visible) { | 260 void ProxyMain::SetVisible(bool visible) { |
| 260 TRACE_EVENT1("cc", "ProxyMain::SetVisible", "visible", visible); | 261 TRACE_EVENT1("cc", "ProxyMain::SetVisible", "visible", visible); |
| 261 channel_main_->SetVisibleOnImpl(visible); | 262 channel_main_->SetVisibleOnImpl(visible); |
| 262 } | 263 } |
| 263 | 264 |
| 264 void ProxyMain::SetNeedsAnimate() { | 265 void ProxyMain::SetNeedsAnimate() { |
| 265 DCHECK(IsMainThread()); | 266 DCHECK(IsMainThread()); |
| 266 if (SendCommitRequestToImplThreadIfNeeded(ANIMATE_PIPELINE_STAGE)) { | 267 if (SendCommitRequestToImplThreadIfNeeded(ANIMATE_PIPELINE_STAGE)) { |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 { | 389 { |
| 389 DebugScopedSetMainThreadBlocked main_thread_blocked(task_runner_provider_); | 390 DebugScopedSetMainThreadBlocked main_thread_blocked(task_runner_provider_); |
| 390 CompletionEvent completion; | 391 CompletionEvent completion; |
| 391 channel_main_->MainFrameWillHappenOnImplForTesting(&completion, | 392 channel_main_->MainFrameWillHappenOnImplForTesting(&completion, |
| 392 &main_frame_will_happen); | 393 &main_frame_will_happen); |
| 393 completion.Wait(); | 394 completion.Wait(); |
| 394 } | 395 } |
| 395 return main_frame_will_happen; | 396 return main_frame_will_happen; |
| 396 } | 397 } |
| 397 | 398 |
| 398 void ProxyMain::ReleaseOutputSurface() { | 399 void ProxyMain::ReleaseCompositorFrameSink() { |
| 399 DCHECK(IsMainThread()); | 400 DCHECK(IsMainThread()); |
| 400 DebugScopedSetMainThreadBlocked main_thread_blocked(task_runner_provider_); | 401 DebugScopedSetMainThreadBlocked main_thread_blocked(task_runner_provider_); |
| 401 CompletionEvent completion; | 402 CompletionEvent completion; |
| 402 channel_main_->ReleaseOutputSurfaceOnImpl(&completion); | 403 channel_main_->ReleaseCompositorFrameSinkOnImpl(&completion); |
| 403 completion.Wait(); | 404 completion.Wait(); |
| 404 } | 405 } |
| 405 | 406 |
| 406 void ProxyMain::UpdateTopControlsState(TopControlsState constraints, | 407 void ProxyMain::UpdateTopControlsState(TopControlsState constraints, |
| 407 TopControlsState current, | 408 TopControlsState current, |
| 408 bool animate) { | 409 bool animate) { |
| 409 DCHECK(IsMainThread()); | 410 DCHECK(IsMainThread()); |
| 410 channel_main_->UpdateTopControlsStateOnImpl(constraints, current, animate); | 411 channel_main_->UpdateTopControlsStateOnImpl(constraints, current, animate); |
| 411 } | 412 } |
| 412 | 413 |
| 413 bool ProxyMain::SendCommitRequestToImplThreadIfNeeded( | 414 bool ProxyMain::SendCommitRequestToImplThreadIfNeeded( |
| 414 CommitPipelineStage required_stage) { | 415 CommitPipelineStage required_stage) { |
| 415 DCHECK(IsMainThread()); | 416 DCHECK(IsMainThread()); |
| 416 DCHECK_NE(NO_PIPELINE_STAGE, required_stage); | 417 DCHECK_NE(NO_PIPELINE_STAGE, required_stage); |
| 417 bool already_posted = max_requested_pipeline_stage_ != NO_PIPELINE_STAGE; | 418 bool already_posted = max_requested_pipeline_stage_ != NO_PIPELINE_STAGE; |
| 418 max_requested_pipeline_stage_ = | 419 max_requested_pipeline_stage_ = |
| 419 std::max(max_requested_pipeline_stage_, required_stage); | 420 std::max(max_requested_pipeline_stage_, required_stage); |
| 420 if (already_posted) | 421 if (already_posted) |
| 421 return false; | 422 return false; |
| 422 channel_main_->SetNeedsCommitOnImpl(); | 423 channel_main_->SetNeedsCommitOnImpl(); |
| 423 return true; | 424 return true; |
| 424 } | 425 } |
| 425 | 426 |
| 426 bool ProxyMain::IsMainThread() const { | 427 bool ProxyMain::IsMainThread() const { |
| 427 return task_runner_provider_->IsMainThread(); | 428 return task_runner_provider_->IsMainThread(); |
| 428 } | 429 } |
| 429 | 430 |
| 430 } // namespace cc | 431 } // namespace cc |
| OLD | NEW |