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

Unified Diff: ui/views/mus/surface_context_factory.cc

Issue 2464123003: Enabling Aura-Mus clients to submit frames to Mus. (Closed)
Patch Set: Rebase, addressing feedback, removing some unneded imports/deps. Created 4 years, 1 month 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
« no previous file with comments | « ui/views/mus/surface_context_factory.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..2cd1cbfe1ef0d441a6704f78cf6a62a98b1fc054 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());
+ 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,6 +101,8 @@ uint32_t SurfaceContextFactory::GetImageTextureTarget(gfx::BufferFormat format,
gpu::GpuMemoryBufferManager*
SurfaceContextFactory::GetGpuMemoryBufferManager() {
+ if (gpu_service_ui_)
+ return gpu_service_ui_->gpu_memory_buffer_manager();
return gpu_service_->gpu_memory_buffer_manager();
}
« no previous file with comments | « ui/views/mus/surface_context_factory.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698