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 71698063c0639e72494947b2103a2a4bd99dbcfc..dda4e63257f4acf0493166c127a163f7630b3dc3 100644 |
--- a/ui/aura/mus/mus_context_factory.cc |
+++ b/ui/aura/mus/mus_context_factory.cc |
@@ -62,8 +62,15 @@ void MusContextFactory::CreateCompositorFrameSink( |
scoped_refptr<cc::ContextProvider> |
MusContextFactory::SharedMainThreadContextProvider() { |
- // NOTIMPLEMENTED(); |
- return nullptr; |
+ if (!shared_main_thread_context_provider_) { |
+ 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) { |