Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1095)

Unified Diff: cc/trees/layer_tree_host.cc

Issue 1419283002: cc: Split Proxy and TaskRunnerProvider for the LayerTreeHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host.cc
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index 8312165c1165b6ae8bd1271e106eed1d0f3c04f2..74dc211045a01d8f229ce22cd0ab28ab45af6cb1 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -137,9 +137,9 @@ void LayerTreeHost::InitializeThreaded(
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
scoped_ptr<BeginFrameSource> external_begin_frame_source) {
- InitializeProxy(ThreadProxy::Create(this,
- main_task_runner,
- impl_task_runner,
+ task_runner_provider_ =
+ TaskRunnerProvider::Create(main_task_runner, impl_task_runner);
+ InitializeProxy(ThreadProxy::Create(this, task_runner_provider_.get(),
external_begin_frame_source.Pass()));
}
@@ -147,14 +147,16 @@ void LayerTreeHost::InitializeSingleThreaded(
LayerTreeHostSingleThreadClient* single_thread_client,
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
scoped_ptr<BeginFrameSource> external_begin_frame_source) {
- InitializeProxy(
- SingleThreadProxy::Create(this,
- single_thread_client,
- main_task_runner,
- external_begin_frame_source.Pass()));
+ task_runner_provider_ = TaskRunnerProvider::Create(main_task_runner, nullptr);
+ InitializeProxy(SingleThreadProxy::Create(
+ this, single_thread_client, task_runner_provider_.get(),
+ external_begin_frame_source.Pass()));
}
-void LayerTreeHost::InitializeForTesting(scoped_ptr<Proxy> proxy_for_testing) {
+void LayerTreeHost::InitializeForTesting(
+ scoped_ptr<TaskRunnerProvider> task_runner_provider,
+ scoped_ptr<Proxy> proxy_for_testing) {
+ task_runner_provider_ = task_runner_provider.Pass();
InitializeProxy(proxy_for_testing.Pass());
}
@@ -187,8 +189,11 @@ LayerTreeHost::~LayerTreeHost() {
BreakSwapPromises(SwapPromise::COMMIT_FAILS);
if (proxy_) {
- DCHECK(proxy_->IsMainThread());
+ DCHECK(task_runner_provider_->IsMainThread());
proxy_->Stop();
+
+ // Proxy must be destroyed before the Task Runner Provider.
+ proxy_ = nullptr;
}
// We must clear any pointers into the layer tree prior to destroying it.
@@ -234,7 +239,7 @@ void LayerTreeHost::RequestMainFrameUpdate() {
// should be delayed until the LayerTreeHost::CommitComplete, which will run
// after the commit, but on the main thread.
void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) {
- DCHECK(proxy_->IsImplThread());
+ DCHECK(task_runner_provider_->IsImplThread());
bool is_new_trace;
TRACE_EVENT_IS_NEW_TRACE(&is_new_trace);
@@ -419,11 +424,11 @@ void LayerTreeHost::DidFailToInitializeOutputSurface() {
scoped_ptr<LayerTreeHostImpl> LayerTreeHost::CreateLayerTreeHostImpl(
LayerTreeHostImplClient* client) {
- DCHECK(proxy_->IsImplThread());
+ DCHECK(task_runner_provider_->IsImplThread());
scoped_ptr<LayerTreeHostImpl> host_impl = LayerTreeHostImpl::Create(
- settings_, client, proxy_.get(), rendering_stats_instrumentation_.get(),
- shared_bitmap_manager_, gpu_memory_buffer_manager_, task_graph_runner_,
- id_);
+ settings_, client, task_runner_provider_.get(),
+ rendering_stats_instrumentation_.get(), shared_bitmap_manager_,
+ gpu_memory_buffer_manager_, task_graph_runner_, id_);
host_impl->SetHasGpuRasterizationTrigger(has_gpu_rasterization_trigger_);
host_impl->SetContentIsSuitableForGpuRasterization(
content_is_suitable_for_gpu_rasterization_);
@@ -436,7 +441,7 @@ scoped_ptr<LayerTreeHostImpl> LayerTreeHost::CreateLayerTreeHostImpl(
void LayerTreeHost::DidLoseOutputSurface() {
TRACE_EVENT0("cc", "LayerTreeHost::DidLoseOutputSurface");
- DCHECK(proxy_->IsMainThread());
+ DCHECK(task_runner_provider_->IsMainThread());
if (output_surface_lost_)
return;
@@ -530,7 +535,7 @@ void LayerTreeHost::SetNextCommitForcesRedraw() {
void LayerTreeHost::SetAnimationEvents(
scoped_ptr<AnimationEventsVector> events) {
- DCHECK(proxy_->IsMainThread());
+ DCHECK(task_runner_provider_->IsMainThread());
if (animation_host_)
animation_host_->SetAnimationEvents(events.Pass());
else
@@ -668,7 +673,7 @@ void LayerTreeHost::NotifyInputThrottledUntilCommit() {
}
void LayerTreeHost::LayoutAndUpdateLayers() {
- DCHECK(!proxy_->HasImplThread());
+ DCHECK(!task_runner_provider_->HasImplThread());
// This function is only valid when not using the scheduler.
DCHECK(!settings_.single_thread_proxy_scheduler);
SingleThreadProxy* proxy = static_cast<SingleThreadProxy*>(proxy_.get());
@@ -686,7 +691,7 @@ void LayerTreeHost::LayoutAndUpdateLayers() {
}
void LayerTreeHost::Composite(base::TimeTicks frame_begin_time) {
- DCHECK(!proxy_->HasImplThread());
+ DCHECK(!task_runner_provider_->HasImplThread());
// This function is only valid when not using the scheduler.
DCHECK(!settings_.single_thread_proxy_scheduler);
SingleThreadProxy* proxy = static_cast<SingleThreadProxy*>(proxy_.get());
@@ -727,7 +732,8 @@ static Layer* FindFirstScrollableLayer(Layer* layer) {
void LayerTreeHost::RecordGpuRasterizationHistogram() {
// Gpu rasterization is only supported for Renderer compositors.
// Checking for proxy_->HasImplThread() to exclude Browser compositors.
- if (gpu_rasterization_histogram_recorded_ || !proxy_->HasImplThread())
+ if (gpu_rasterization_histogram_recorded_ ||
+ !task_runner_provider_->HasImplThread())
return;
// Record how widely gpu rasterization is enabled.
@@ -895,7 +901,7 @@ void LayerTreeHost::UpdateTopControlsState(TopControlsState constraints,
TopControlsState current,
bool animate) {
// Top controls are only used in threaded mode.
- DCHECK(proxy_->HasImplThread());
+ DCHECK(task_runner_provider_->HasImplThread());
proxy_->UpdateTopControlsState(constraints, current, animate);
}
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698