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

Unified Diff: blimp/client/core/compositor/blimp_compositor.cc

Issue 2297933002: blimp: Set up the CompositorDependencies for blimp in Chrome. (Closed)
Patch Set: retry gpu process failures after crbug.com/643282 Created 4 years, 3 months 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
Index: blimp/client/core/compositor/blimp_compositor.cc
diff --git a/blimp/client/core/compositor/blimp_compositor.cc b/blimp/client/core/compositor/blimp_compositor.cc
index e778c8b237ac6407124c470447bd3428a903f99c..91edfe58bc727ee1eed8a4015ba9828108b18f93 100644
--- a/blimp/client/core/compositor/blimp_compositor.cc
+++ b/blimp/client/core/compositor/blimp_compositor.cc
@@ -72,7 +72,7 @@ BlimpCompositor::BlimpCompositor(
DCHECK(thread_checker_.CalledOnValidThread());
surface_id_allocator_ = base::MakeUnique<cc::SurfaceIdAllocator>(
- GetEmbedderDeps()->AllocateSurfaceId());
+ GetEmbedderDeps()->AllocateSurfaceClientId());
GetEmbedderDeps()->GetSurfaceManager()->RegisterSurfaceClientId(
surface_id_allocator_->client_id());
}
@@ -104,8 +104,8 @@ void BlimpCompositor::RequestNewOutputSurface() {
DCHECK(!output_surface_request_pending_);
output_surface_request_pending_ = true;
- GetEmbedderDeps()->GetContextProvider(
- base::Bind(&BlimpCompositor::OnContextProviderCreated,
+ GetEmbedderDeps()->GetContextProviders(
+ base::Bind(&BlimpCompositor::OnContextProvidersCreated,
weak_ptr_factory_.GetWeakPtr()));
}
@@ -157,8 +157,9 @@ void BlimpCompositor::OnCompositorMessageReceived(
}
}
-void BlimpCompositor::OnContextProviderCreated(
- const scoped_refptr<cc::ContextProvider>& provider) {
+void BlimpCompositor::OnContextProvidersCreated(
+ const scoped_refptr<cc::ContextProvider>& compositor_context_provider,
+ const scoped_refptr<cc::ContextProvider>& worker_context_provider) {
DCHECK(!surface_factory_)
<< "Any connection to the old output surface should have been destroyed";
@@ -168,15 +169,19 @@ void BlimpCompositor::OnContextProviderCreated(
if (!output_surface_request_pending_)
return;
- // TODO(khushalsagar): Make a worker context and bind it to the current
- // thread:
- // Worker context is bound to the main thread in RenderThreadImpl. One day
- // that will change and then this will have to be removed.
- // worker_context_provider->BindToCurrentThread();
+ // Try again if the context creation failed.
+ if (!compositor_context_provider) {
+ GetEmbedderDeps()->GetContextProviders(
+ base::Bind(&BlimpCompositor::OnContextProvidersCreated,
+ weak_ptr_factory_.GetWeakPtr()));
+ return;
+ }
+
std::unique_ptr<DelegatedOutputSurface> delegated_output_surface =
base::MakeUnique<DelegatedOutputSurface>(
- provider, nullptr, base::ThreadTaskRunnerHandle::Get(),
- weak_ptr_factory_.GetWeakPtr());
+ std::move(compositor_context_provider),
+ std::move(worker_context_provider),
+ base::ThreadTaskRunnerHandle::Get(), weak_ptr_factory_.GetWeakPtr());
host_->SetOutputSurface(std::move(delegated_output_surface));
}
@@ -275,7 +280,14 @@ void BlimpCompositor::CreateLayerTreeHost(
params.main_task_runner = base::ThreadTaskRunnerHandle::Get();
params.image_serialization_processor =
compositor_dependencies_->GetImageSerializationProcessor();
- params.settings = GetEmbedderDeps()->GetLayerTreeSettings();
+
+ cc::LayerTreeSettings* settings =
+ compositor_dependencies_->GetLayerTreeSettings();
+ // TODO(khushalsagar): This is a hack. Remove when we move the split point
+ // out. For details on why this is needed, see crbug.com/586210.
+ settings->abort_commit_before_output_surface_creation = false;
+ params.settings = settings;
+
params.animation_host = cc::AnimationHost::CreateMainInstance();
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner =
« no previous file with comments | « blimp/client/core/compositor/blimp_compositor.h ('k') | blimp/client/core/compositor/blimp_compositor_dependencies.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698