Chromium Code Reviews| Index: ui/views/mus/surface_context_factory.cc |
| diff --git a/ui/views/mus/surface_context_factory.cc b/ui/views/mus/surface_context_factory.cc |
| index ba29f460b795b0c128f253feb690d9dfdec8d090..ea5a71e4870146c0422a90e60067b6a568f8384b 100644 |
| --- a/ui/views/mus/surface_context_factory.cc |
| +++ b/ui/views/mus/surface_context_factory.cc |
| @@ -11,6 +11,8 @@ |
| #include "services/ui/public/cpp/gpu_service.h" |
| #include "services/ui/public/cpp/window.h" |
| #include "services/ui/public/cpp/window_compositor_frame_sink.h" |
| +#include "ui/aura/mus/gpu_service.h" |
| +#include "ui/aura/mus/window_port_mus.h" |
| #include "ui/compositor/reflector.h" |
| #include "ui/gl/gl_bindings.h" |
| #include "ui/views/mus/native_widget_mus.h" |
| @@ -30,6 +32,9 @@ class FakeReflector : public ui::Reflector { |
| } // namespace |
| SurfaceContextFactory::SurfaceContextFactory(ui::GpuService* gpu_service) |
| + : next_sink_id_(1u), gpu_service_ui_(gpu_service) {} |
| + |
| +SurfaceContextFactory::SurfaceContextFactory(aura::GpuService* gpu_service) |
| : next_sink_id_(1u), gpu_service_(gpu_service) {} |
| SurfaceContextFactory::~SurfaceContextFactory() {} |
| @@ -37,14 +42,30 @@ SurfaceContextFactory::~SurfaceContextFactory() {} |
| void SurfaceContextFactory::CreateCompositorFrameSink( |
| base::WeakPtr<ui::Compositor> compositor) { |
| ui::Window* window = compositor->window(); |
| - NativeWidgetMus* native_widget = NativeWidgetMus::GetForWindow(window); |
| - ui::mojom::CompositorFrameSinkType compositor_frame_sink_type = |
| - native_widget->compositor_frame_sink_type(); |
| - auto compositor_frame_sink = window->RequestCompositorFrameSink( |
| - compositor_frame_sink_type, make_scoped_refptr(new ui::ContextProvider( |
| - gpu_service_->EstablishGpuChannelSync())), |
| - gpu_service_->gpu_memory_buffer_manager()); |
| - compositor->SetCompositorFrameSink(std::move(compositor_frame_sink)); |
| + if (window) { |
| + // TODO(mfomitchev): Remove this clause once all clients switch to using |
| + // Aura-Mus. |
| + NativeWidgetMus* native_widget = NativeWidgetMus::GetForWindow(window); |
| + ui::mojom::CompositorFrameSinkType compositor_frame_sink_type = |
| + native_widget->compositor_frame_sink_type(); |
| + auto compositor_frame_sink = window->RequestCompositorFrameSink( |
| + compositor_frame_sink_type, |
| + make_scoped_refptr(new ui::ContextProvider( |
| + gpu_service_ui_->EstablishGpuChannelSync())), |
| + gpu_service_ui_->gpu_memory_buffer_manager()); |
| + compositor->SetCompositorFrameSink(std::move(compositor_frame_sink)); |
| + } else { |
| + aura::WindowTreeHost* host = |
| + aura::WindowTreeHost::GetForAcceleratedWidget(compositor->widget()); |
| + aura::WindowPortMus* window_port = aura::WindowPortMus::Get(host->window()); |
|
sky
2016/11/01 20:46:53
fyi: I think you want host->GetWindowWithServerWin
mfomitchev
2016/11/01 21:01:59
Seems like I'd have to do a static cast from WTH t
sky
2016/11/01 21:36:05
Indeed you would have to do that. As I said, this
mfomitchev
2016/11/02 20:00:31
Looks like your CL has landed, so I can just leave
|
| + DCHECK(window_port); |
| + auto compositor_frame_sink = window_port->RequestCompositorFrameSink( |
| + ui::mojom::CompositorFrameSinkType::DEFAULT, |
| + make_scoped_refptr( |
| + new ui::ContextProvider(gpu_service_->EstablishGpuChannelSync())), |
| + gpu_service_->gpu_memory_buffer_manager()); |
| + compositor->SetCompositorFrameSink(std::move(compositor_frame_sink)); |
| + } |
| } |
| std::unique_ptr<ui::Reflector> SurfaceContextFactory::CreateReflector( |
| @@ -80,7 +101,10 @@ uint32_t SurfaceContextFactory::GetImageTextureTarget(gfx::BufferFormat format, |
| gpu::GpuMemoryBufferManager* |
| SurfaceContextFactory::GetGpuMemoryBufferManager() { |
| - return gpu_service_->gpu_memory_buffer_manager(); |
| + if (gpu_service_ui_) |
| + return gpu_service_ui_->gpu_memory_buffer_manager(); |
| + else |
|
sky
2016/11/01 20:46:53
no else here (see style guide).
mfomitchev
2016/11/01 21:01:59
Acknowledged.
mfomitchev
2016/11/02 20:00:31
Done.
|
| + return gpu_service_->gpu_memory_buffer_manager(); |
| } |
| cc::TaskGraphRunner* SurfaceContextFactory::GetTaskGraphRunner() { |