Index: content/common/gpu/gpu_channel_manager.cc |
diff --git a/content/common/gpu/gpu_channel_manager.cc b/content/common/gpu/gpu_channel_manager.cc |
index 4dd10273396ee5a9e9f562f335dd1b189267ad39..e478f599e210cdd66c88d44421b5960310e3a37e 100644 |
--- a/content/common/gpu/gpu_channel_manager.cc |
+++ b/content/common/gpu/gpu_channel_manager.cc |
@@ -30,6 +30,10 @@ |
#include "ui/gl/gl_bindings.h" |
#include "ui/gl/gl_share_group.h" |
+#if defined(OS_CHROMEOS) |
+#include "content/common/gpu/media/gpu_arc_video_service.h" |
+#endif |
+ |
namespace content { |
namespace { |
@@ -137,6 +141,10 @@ bool GpuChannelManager::OnControlMessageReceived(const IPC::Message& msg) { |
IPC_MESSAGE_HANDLER(GpuMsg_CreateViewCommandBuffer, |
OnCreateViewCommandBuffer) |
IPC_MESSAGE_HANDLER(GpuMsg_DestroyGpuMemoryBuffer, OnDestroyGpuMemoryBuffer) |
+#if defined(OS_CHROMEOS) |
+ IPC_MESSAGE_HANDLER(GpuMsg_CreateArcVideoAcceleratorChannel, |
+ OnCreateArcVideoAcceleratorChannel) |
+#endif |
IPC_MESSAGE_HANDLER(GpuMsg_LoadedShader, OnLoadedShader) |
IPC_MESSAGE_HANDLER(GpuMsg_UpdateValueState, OnUpdateValueState) |
#if defined(OS_ANDROID) |
@@ -246,6 +254,28 @@ void GpuChannelManager::OnDestroyGpuMemoryBuffer( |
DestroyGpuMemoryBuffer(id, client_id); |
} |
+#if defined(OS_CHROMEOS) |
+void GpuChannelManager::OnCreateArcVideoAcceleratorChannel() { |
+ if (!gpu_arc_video_service_) { |
+ gpu_arc_video_service_.reset( |
+ new GpuArcVideoService(shutdown_event_, io_task_runner_)); |
+ } |
+ |
+ gpu_arc_video_service_->CreateChannel( |
+ base::Bind(&GpuChannelManager::ArcVideoAcceleratorChannelCreated, |
+ weak_factory_.GetWeakPtr())); |
+} |
+ |
+void GpuChannelManager::ArcVideoAcceleratorChannelCreated( |
+ const IPC::ChannelHandle& handle) { |
+ Send(new GpuHostMsg_ArcVideoAcceleratorChannelCreated(handle)); |
+} |
+ |
+void GpuChannelManager::OnShutdownArcVideoService() { |
+ gpu_arc_video_service_.reset(); |
+} |
+#endif |
+ |
void GpuChannelManager::OnUpdateValueState( |
int client_id, unsigned int target, const gpu::ValueState& state) { |
// Only pass updated state to the channel corresponding to the |