Index: content/browser/renderer_host/gpu_message_filter.cc |
=================================================================== |
--- content/browser/renderer_host/gpu_message_filter.cc (revision 132251) |
+++ content/browser/renderer_host/gpu_message_filter.cc (working copy) |
@@ -173,11 +173,31 @@ |
void GpuMessageFilter::EstablishChannelCallback( |
IPC::Message* reply, |
const IPC::ChannelHandle& channel, |
+ base::ProcessHandle gpu_process_for_browser, |
const content::GPUInfo& gpu_info) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ base::ProcessHandle renderer_process_for_gpu; |
+ if (gpu_process_for_browser != 0) { |
+#if defined(OS_WIN) |
+ // Create a process handle that the renderer process can give to the GPU |
+ // process to give it access to its handles. |
+ DuplicateHandle(base::GetCurrentProcessHandle(), |
+ peer_handle(), |
+ gpu_process_for_browser, |
+ &renderer_process_for_gpu, |
+ PROCESS_DUP_HANDLE, |
+ FALSE, |
+ 0); |
+#else |
+ renderer_process_for_gpu = peer_handle(); |
+#endif |
+ } else { |
+ renderer_process_for_gpu = 0; |
+ } |
+ |
GpuHostMsg_EstablishGpuChannel::WriteReplyParams( |
- reply, render_process_id_, channel, gpu_info); |
+ reply, render_process_id_, channel, renderer_process_for_gpu, gpu_info); |
Send(reply); |
} |