Index: gpu/ipc/service/gpu_channel.cc |
diff --git a/gpu/ipc/service/gpu_channel.cc b/gpu/ipc/service/gpu_channel.cc |
index 73abc9c6867bc5820894b7ef368750805a845273..f069393276bd9b65701532dbb3babb3c93b15304 100644 |
--- a/gpu/ipc/service/gpu_channel.cc |
+++ b/gpu/ipc/service/gpu_channel.cc |
@@ -41,6 +41,7 @@ |
#include "gpu/ipc/service/gpu_memory_buffer_factory.h" |
#include "ipc/ipc_channel.h" |
#include "ipc/message_filter.h" |
+#include "mojo/public/cpp/system/message_pipe.h" |
#include "ui/gl/gl_context.h" |
#include "ui/gl/gl_image_shared_memory.h" |
#include "ui/gl/gl_surface.h" |
@@ -630,22 +631,20 @@ IPC::ChannelHandle GpuChannel::Init(base::WaitableEvent* shutdown_event) { |
DCHECK(!channel_); |
IPC::ChannelHandle channel_handle(channel_id_); |
+ IPC::ChannelHandle client_channel_handle = channel_handle; |
+ mojo::MessagePipe pipe_pair; |
+ DCHECK(pipe_pair.handle0.is_valid()); |
+ DCHECK(pipe_pair.handle1.is_valid()); |
+ channel_handle = IPC::ChannelHandle(pipe_pair.handle0.release()); |
+ client_channel_handle = IPC::ChannelHandle(pipe_pair.handle1.release()); |
channel_ = |
- IPC::SyncChannel::Create(channel_handle, IPC::Channel::MODE_SERVER, this, |
- io_task_runner_, false, shutdown_event); |
- |
-#if defined(OS_POSIX) |
- // On POSIX, pass the renderer-side FD. Also mark it as auto-close so |
- // that it gets closed after it has been sent. |
- base::ScopedFD renderer_fd = channel_->TakeClientFileDescriptor(); |
- DCHECK(renderer_fd.is_valid()); |
- channel_handle.socket = base::FileDescriptor(std::move(renderer_fd)); |
-#endif |
+ IPC::SyncChannel::Create(channel_handle, IPC::Channel::MODE_SERVER, |
+ this, io_task_runner_, false, shutdown_event); |
channel_->AddFilter(filter_.get()); |
- return channel_handle; |
+ return client_channel_handle; |
} |
void GpuChannel::SetUnhandledMessageListener(IPC::Listener* listener) { |