Index: ui/ozone/platform/drm/gpu/drm_gpu_platform_support_inprocess.cc |
diff --git a/ui/ozone/platform/drm/gpu/drm_gpu_platform_support_inprocess.cc b/ui/ozone/platform/drm/gpu/drm_gpu_platform_support_inprocess.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a46748045e7615c91f3bea63e02275360b3253b3 |
--- /dev/null |
+++ b/ui/ozone/platform/drm/gpu/drm_gpu_platform_support_inprocess.cc |
@@ -0,0 +1,94 @@ |
+// 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 "base/bind.h" |
+#include "base/location.h" |
+#include "ui/ozone/platform/drm/gpu/drm_gpu_display_manager.h" |
+#include "ui/ozone/platform/drm/gpu/drm_gpu_platform_support_inprocess.h" |
+#include "ui/ozone/public/ozone_platform.h" |
+ |
+namespace ui { |
+ |
+DrmGpuPlatformSupportInprocess::DrmGpuPlatformSupportInprocess() |
+ : platform_support_(static_cast<ui::DrmGpuPlatformSupport*>( |
+ ui::OzonePlatform::GetInstance()->GetGpuPlatformSupport())) { |
+ platform_support_->SetDelegate(this); |
+} |
+ |
+DrmGpuPlatformSupportInprocess::~DrmGpuPlatformSupportInprocess() { |
+} |
+ |
+void DrmGpuPlatformSupportInprocess::OnChannelEstablished( |
+ scoped_refptr<base::SingleThreadTaskRunner> send_runner, |
+ base::Callback<void(Message*)> send_callback) { |
+ |
+ send_runner_ = send_runner; |
+ send_callback_ = send_callback; |
+ |
+ platform_support_->OnChannelEstablished(); |
+} |
+ |
+bool DrmGpuPlatformSupportInprocess::OnMessageReceived(const Message& message) { |
+ bool handled = true; |
+ |
+ switch (message.id) { |
+ case OZONE_GPU_MSG__CREATE_WINDOW: |
+ platform_support_->OnCreateWindow( |
+ static_cast<const OzoneGpuMsg_CreateWindow*>(&message)->widget); |
+ break; |
+ |
+ case OZONE_GPU_MSG__WINDOW_BOUNDS_CHANGED: { |
+ auto message_params = static_cast< |
+ const OzoneGpuMsg_WindowBoundsChanged*>(&message); |
+ platform_support_->OnWindowBoundsChanged(message_params->widget, |
+ message_params->bounds); |
+ break; |
+ } |
+ |
+ case OZONE_GPU_MSG__ADD_GRAPHICS_DEVICE: { |
+ auto message_params = static_cast< |
+ const OzoneGpuMsg_AddGraphicsDevice*>(&message); |
+ platform_support_->OnAddGraphicsDevice(message_params->path, |
+ message_params->fd); |
+ break; |
+ } |
+ |
+ case OZONE_GPU_MSG__REFRESH_NATIVE_DISPLAYS: |
+ platform_support_->OnRefreshNativeDisplays(); |
+ break; |
+ |
+ case OZONE_GPU_MSG__CONFIGURE_NATIVE_DISPLAY: { |
+ auto message_params = static_cast< |
+ const OzoneGpuMsg_ConfigureNativeDisplay*>(&message); |
+ platform_support_->OnConfigureNativeDisplay( |
+ message_params->id, message_params->mode, message_params->originhost); |
+ break; |
+ } |
+ |
+ default: |
+ handled = false; |
+ } |
+ |
+ return handled; |
+} |
+ |
+void DrmGpuPlatformSupportInprocess::UpdateNativeDisplays( |
+ const std::vector<DisplaySnapshot_Params>& displays) { |
+ Send(new OzoneHostMsg_UpdateNativeDisplays(displays)); |
+} |
+ |
+void DrmGpuPlatformSupportInprocess::DisplayConfigured(int64_t id, |
+ bool result) { |
+ Send(new OzoneHostMsg_DisplayConfigured(id, result)); |
+} |
+ |
+bool DrmGpuPlatformSupportInprocess::Send(Message* message) { |
+ if (send_runner_->PostTask(FROM_HERE, base::Bind(send_callback_, message))) |
+ return true; |
+ |
+ delete message; |
+ return false; |
+} |
+ |
+} // namespace |