Index: ui/aura/mus/mus_context_factory.cc |
diff --git a/ui/aura/mus/mus_context_factory.cc b/ui/aura/mus/mus_context_factory.cc |
index 9517875318f35ee39d05ef00313a8b7970cf1c18..b39ef5fb660fababef2c8ec93bf4815deb90c1b4 100644 |
--- a/ui/aura/mus/mus_context_factory.cc |
+++ b/ui/aura/mus/mus_context_factory.cc |
@@ -50,8 +50,18 @@ void MusContextFactory::CreateCompositorFrameSink( |
scoped_refptr<cc::ContextProvider> |
MusContextFactory::SharedMainThreadContextProvider() { |
- // NOTIMPLEMENTED(); |
- return nullptr; |
+ if (!shared_main_thread_context_provider_) { |
Fady Samuel
2017/05/16 10:26:41
Maybe this can be a separate CL?
|
+ // In this point, the gpu channel should be already established in gpu_, |
+ // the gpu_->EstablishGpuChannelSync() just returns the gpu channel |
+ // immediately. |
+ scoped_refptr<gpu::GpuChannelHost> gpu_channel = |
+ gpu_->EstablishGpuChannelSync(); |
+ shared_main_thread_context_provider_ = |
+ gpu_->CreateContextProvider(std::move(gpu_channel)); |
+ if (!shared_main_thread_context_provider_->BindToCurrentThread()) |
+ shared_main_thread_context_provider_ = nullptr; |
+ } |
+ return shared_main_thread_context_provider_; |
} |
void MusContextFactory::RemoveCompositor(ui::Compositor* compositor) { |