Index: chrome/browser/gpu_process_host.cc |
=================================================================== |
--- chrome/browser/gpu_process_host.cc (revision 65702) |
+++ chrome/browser/gpu_process_host.cc (working copy) |
@@ -194,6 +194,10 @@ |
OnAcceleratedSurfaceSetIOSurface) |
IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped, |
OnAcceleratedSurfaceBuffersSwapped) |
+#elif defined(OS_WIN) |
+ IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_CreateCompositorHostWindow, |
+ OnCreateCompositorHostWindow) |
+ IPC_MESSAGE_HANDLER(GpuHostMsg_ScheduleComposite, OnScheduleComposite) |
#endif |
IPC_MESSAGE_UNHANDLED_ERROR() |
IPC_END_MESSAGE_MAP() |
@@ -342,6 +346,61 @@ |
new BuffersSwappedDispatcher( |
renderer_id, render_view_id, window, surface_id)); |
} |
+ |
+#elif defined(OS_WIN) |
+ |
+namespace { |
+ |
+void SendDelayedReply(IPC::Message* reply_msg) { |
apatrick_chromium
2010/11/11 22:32:15
I think some of this code might belong in GpuProce
nduca
2010/11/11 23:53:33
I don't have any religion here... this is largely
|
+ GpuProcessHost::Get()->Send(reply_msg); |
+} |
+ |
+void CreateCompositorHostWindowDispatcher(int32 renderer_id, |
apatrick_chromium
2010/11/11 22:32:15
Wrap first argument to next line.
nduca
2010/11/11 23:53:33
Done.
|
+ int32 render_view_id, |
+ IPC::Message* reply_msg) { |
+ |
+ RenderViewHost* host = RenderViewHost::FromID(renderer_id, |
+ render_view_id); |
+ DCHECK(host); |
+ |
+ RenderWidgetHostView* view = host->view(); |
+ DCHECK(view); |
+ gfx::PluginWindowHandle id = view->CreateCompositorHostWindow(); |
+ |
+ GpuHostMsg_CreateCompositorHostWindow::WriteReplyParams(reply_msg, id); |
+ |
+ // Have to reply from IO thread. |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, |
+ NewRunnableFunction(&SendDelayedReply, reply_msg)); |
+} |
+ |
+void ScheduleCompositeDispatcher(int32 renderer_id, int32 render_view_id) { |
+ RenderViewHost* host = RenderViewHost::FromID(renderer_id, |
+ render_view_id); |
+ DCHECK(host); |
+ |
+ |
+ host->ScheduleComposite(); |
+} |
+} // namespace |
+ |
+void GpuProcessHost::OnCreateCompositorHostWindow( |
+ int32 renderer_id, |
+ int32 render_view_id, |
+ IPC::Message* reply_message) { |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, FROM_HERE, |
+ NewRunnableFunction(&CreateCompositorHostWindowDispatcher, |
+ renderer_id, render_view_id, reply_message)); |
+} |
+ |
+void GpuProcessHost::OnScheduleComposite(int renderer_id, int render_view_id) { |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, FROM_HERE, |
+ NewRunnableFunction(&ScheduleCompositeDispatcher, |
+ renderer_id, render_view_id)); |
+} |
#endif |
void GpuProcessHost::ReplyToRenderer( |