Chromium Code Reviews| Index: blimp/client/feature/compositor/blimp_compositor.cc |
| diff --git a/blimp/client/feature/compositor/blimp_compositor.cc b/blimp/client/feature/compositor/blimp_compositor.cc |
| index 8c16907e6ba97616c647966a2aad1d63ea38aec7..0a44e3863f74a4b03e8d3186877fa4df8b57b05b 100644 |
| --- a/blimp/client/feature/compositor/blimp_compositor.cc |
| +++ b/blimp/client/feature/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,7 +104,7 @@ void BlimpCompositor::RequestNewOutputSurface() { |
| DCHECK(!output_surface_request_pending_); |
| output_surface_request_pending_ = true; |
| - GetEmbedderDeps()->GetContextProvider( |
| + GetEmbedderDeps()->GetContextProviders( |
| base::Bind(&BlimpCompositor::OnContextProviderCreated, |
| weak_ptr_factory_.GetWeakPtr())); |
| } |
| @@ -159,7 +159,8 @@ void BlimpCompositor::OnCompositorMessageReceived( |
| } |
| void BlimpCompositor::OnContextProviderCreated( |
| - const scoped_refptr<cc::ContextProvider>& provider) { |
| + const blimp::client::CompositorDependencies::ContextProviders& |
| + context_providers) { |
| DCHECK(!surface_factory_) |
| << "Any connection to the old output surface should have been destroyed"; |
| @@ -169,15 +170,18 @@ 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 (!context_providers.compositor_context_provider) { |
| + GetEmbedderDeps()->GetContextProviders( |
| + base::Bind(&BlimpCompositor::OnContextProviderCreated, |
| + weak_ptr_factory_.GetWeakPtr())); |
|
David Trainor- moved to gerrit
2016/08/31 00:28:58
Return after this?
Khushal
2016/08/31 21:22:50
Good catch. Done.
|
| + } |
| + |
| std::unique_ptr<DelegatedOutputSurface> delegated_output_surface = |
| base::MakeUnique<DelegatedOutputSurface>( |
| - provider, nullptr, base::ThreadTaskRunnerHandle::Get(), |
| - weak_ptr_factory_.GetWeakPtr()); |
| + std::move(context_providers.compositor_context_provider), |
| + std::move(context_providers.worker_context_provider), |
| + base::ThreadTaskRunnerHandle::Get(), weak_ptr_factory_.GetWeakPtr()); |
| host_->SetOutputSurface(std::move(delegated_output_surface)); |
| } |