Index: ui/ozone/platform/drm/host/drm_gpu_platform_support_host_inprocess.cc |
diff --git a/ui/ozone/platform/drm/host/drm_gpu_platform_support_host_inprocess.cc b/ui/ozone/platform/drm/host/drm_gpu_platform_support_host_inprocess.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..248427b13292e10f2d28c3822d5c00a1f6e41303 |
--- /dev/null |
+++ b/ui/ozone/platform/drm/host/drm_gpu_platform_support_host_inprocess.cc |
@@ -0,0 +1,103 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ui/ozone/platform/drm/host/drm_gpu_platform_support_host_inprocess.h" |
+#include "ui/ozone/public/ozone_platform.h" |
+ |
+namespace ui { |
+ |
+DrmGpuPlatformSupportHostInprocess::DrmGpuPlatformSupportHostInprocess() |
+ : platform_support_(static_cast<DrmGpuPlatformSupportHost*>( |
+ ui::OzonePlatform::GetInstance()->GetGpuPlatformSupportHost())) { |
+ platform_support_->SetDelegate(this); |
+} |
+ |
+DrmGpuPlatformSupportHostInprocess::~DrmGpuPlatformSupportHostInprocess() { |
+} |
+ |
+void DrmGpuPlatformSupportHostInprocess::OnChannelEstablished( |
+ int host_id, |
+ scoped_refptr<base::SingleThreadTaskRunner> send_runner, |
+ const base::Callback<void(Message*)>& send_callback) { |
+ |
+ send_runner_ = send_runner; |
+ send_callback_ = send_callback; |
+ |
+ platform_support_->OnChannelEstablished(host_id); |
+} |
+ |
+void DrmGpuPlatformSupportHostInprocess::OnChannelDestroyed(int host_id) { |
+ send_runner_ = nullptr; |
+ send_callback_.Reset(); |
+ |
+ platform_support_->OnChannelDestroyed(host_id); |
+} |
+ |
+bool DrmGpuPlatformSupportHostInprocess::OnMessageReceived( |
+ const Message& message) { |
+ DrmDisplayHostManager* display_manager = |
+ platform_support_->get_display_manager(); |
+ DCHECK(display_manager); |
+ |
+ bool handled = true; |
+ |
+ switch (message.id) { |
+ case OZONE_HOST_MSG__UPDATE_NATIVE_DISPLAYS: { |
+ auto message_params = static_cast< |
+ const OzoneHostMsg_UpdateNativeDisplays*>(&message); |
+ display_manager->OnUpdateNativeDisplays(message_params->displays); |
+ break; |
+ } |
+ |
+ case OZONE_HOST_MSG__DISPLAY_CONFIGURED: { |
+ auto message_params = static_cast< |
+ const OzoneHostMsg_DisplayConfigured*>(&message); |
+ display_manager->OnDisplayConfigured(message_params->id, |
+ message_params->result); |
+ break; |
+ } |
+ |
+ default: |
+ handled = false; |
+ } |
+ return handled; |
+} |
+ |
+bool DrmGpuPlatformSupportHostInprocess::Send(Message* message) { |
+ if (platform_support_->IsConnected() && |
+ send_runner_->PostTask(FROM_HERE, base::Bind(send_callback_, message))) |
+ return true; |
+ |
+ delete message; |
+ return false; |
+} |
+ |
+void DrmGpuPlatformSupportHostInprocess::CreateWindow( |
+ const gfx::AcceleratedWidget& widget) { |
+ Send(new OzoneGpuMsg_CreateWindow(widget)); |
+} |
+ |
+void DrmGpuPlatformSupportHostInprocess::WindowBoundsChanged( |
+ const gfx::AcceleratedWidget& widget, const gfx::Rect& bounds) { |
+ Send(new OzoneGpuMsg_WindowBoundsChanged(widget, bounds)); |
+} |
+ |
+void DrmGpuPlatformSupportHostInprocess::AddGraphicsDevice( |
+ const base::FilePath& path, |
+ const base::FileDescriptor& fd) { |
+ Send(new OzoneGpuMsg_AddGraphicsDevice(path, fd)); |
+} |
+ |
+bool DrmGpuPlatformSupportHostInprocess::RefreshNativeDisplays() { |
+ return Send(new OzoneGpuMsg_RefreshNativeDisplays()); |
+} |
+ |
+bool DrmGpuPlatformSupportHostInprocess::ConfigureNativeDisplay( |
+ int64_t id, |
+ const DisplayMode_Params& mode, |
+ const gfx::Point& originhost) { |
+ return Send(new OzoneGpuMsg_ConfigureNativeDisplay(id, mode, originhost)); |
+} |
+ |
+} // namespace |