Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1341)

Unified Diff: chrome/browser/gpu_process_host.cc

Issue 4815001: Use inner HWND for accelerated rendering on windows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,62 @@
new BuffersSwappedDispatcher(
renderer_id, render_view_id, window, surface_id));
}
+
+#elif defined(OS_WIN)
+
+namespace {
+
+void SendDelayedReply(IPC::Message* reply_msg) {
+ GpuProcessHost::Get()->Send(reply_msg);
+}
+
+void CreateCompositorHostWindowDispatcher(
+ int32 renderer_id,
+ int32 render_view_id,
+ IPC::Message* reply_msg) {
+
jam 2010/11/12 18:08:00 nit:extra line
nduca 2010/11/12 19:45:32 Done.
+ RenderViewHost* host = RenderViewHost::FromID(renderer_id,
+ render_view_id);
+ DCHECK(host);
jam 2010/11/12 18:08:00 this, and 368: we normally don't add NULL dchecks
nduca 2010/11/12 19:45:32 Done.
+
+ RenderWidgetHostView* view = host->view();
+ DCHECK(view);
+ gfx::PluginWindowHandle id = view->CreateCompositorHostWindow();
+
+ GpuHostMsg_CreateCompositorHostWindow::WriteReplyParams(reply_msg, id);
+
+ // Have to reply from IO thread.
jam 2010/11/12 18:08:00 you can actually just do host->Send directly
nduca 2010/11/12 19:45:32 Done.
jam 2010/11/12 20:34:41 I actually meant "host->Send", i.e. using the Rend
+ 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(

Powered by Google App Engine
This is Rietveld 408576698