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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/gpu_process_host.h" 5 #include "chrome/browser/gpu_process_host.h"
6 6
7 #include "app/app_switches.h" 7 #include "app/app_switches.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/thread.h" 9 #include "base/thread.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 IPC_MESSAGE_HANDLER(GpuHostMsg_SynchronizeReply, OnSynchronizeReply) 187 IPC_MESSAGE_HANDLER(GpuHostMsg_SynchronizeReply, OnSynchronizeReply)
188 IPC_MESSAGE_HANDLER(GpuHostMsg_GraphicsInfoCollected, 188 IPC_MESSAGE_HANDLER(GpuHostMsg_GraphicsInfoCollected,
189 OnGraphicsInfoCollected) 189 OnGraphicsInfoCollected)
190 #if defined(OS_LINUX) 190 #if defined(OS_LINUX)
191 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetViewXID, OnGetViewXID) 191 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetViewXID, OnGetViewXID)
192 #elif defined(OS_MACOSX) 192 #elif defined(OS_MACOSX)
193 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceSetIOSurface, 193 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceSetIOSurface,
194 OnAcceleratedSurfaceSetIOSurface) 194 OnAcceleratedSurfaceSetIOSurface)
195 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped, 195 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped,
196 OnAcceleratedSurfaceBuffersSwapped) 196 OnAcceleratedSurfaceBuffersSwapped)
197 #elif defined(OS_WIN)
198 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_CreateCompositorHostWindow,
199 OnCreateCompositorHostWindow)
200 IPC_MESSAGE_HANDLER(GpuHostMsg_ScheduleComposite, OnScheduleComposite)
197 #endif 201 #endif
198 IPC_MESSAGE_UNHANDLED_ERROR() 202 IPC_MESSAGE_UNHANDLED_ERROR()
199 IPC_END_MESSAGE_MAP() 203 IPC_END_MESSAGE_MAP()
200 } 204 }
201 205
202 void GpuProcessHost::OnChannelEstablished( 206 void GpuProcessHost::OnChannelEstablished(
203 const IPC::ChannelHandle& channel_handle, 207 const IPC::ChannelHandle& channel_handle,
204 const GPUInfo& gpu_info) { 208 const GPUInfo& gpu_info) {
205 const ChannelRequest& request = sent_requests_.front(); 209 const ChannelRequest& request = sent_requests_.front();
206 ReplyToRenderer(channel_handle, gpu_info, request.filter); 210 ReplyToRenderer(channel_handle, gpu_info, request.filter);
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 void GpuProcessHost::OnAcceleratedSurfaceBuffersSwapped( 339 void GpuProcessHost::OnAcceleratedSurfaceBuffersSwapped(
336 int32 renderer_id, 340 int32 renderer_id,
337 int32 render_view_id, 341 int32 render_view_id,
338 gfx::PluginWindowHandle window, 342 gfx::PluginWindowHandle window,
339 uint64 surface_id) { 343 uint64 surface_id) {
340 BrowserThread::PostTask( 344 BrowserThread::PostTask(
341 BrowserThread::UI, FROM_HERE, 345 BrowserThread::UI, FROM_HERE,
342 new BuffersSwappedDispatcher( 346 new BuffersSwappedDispatcher(
343 renderer_id, render_view_id, window, surface_id)); 347 renderer_id, render_view_id, window, surface_id));
344 } 348 }
349
350 #elif defined(OS_WIN)
351
352 namespace {
353
354 void SendDelayedReply(IPC::Message* reply_msg) {
355 GpuProcessHost::Get()->Send(reply_msg);
356 }
357
358 void CreateCompositorHostWindowDispatcher(
359 int32 renderer_id,
360 int32 render_view_id,
361 IPC::Message* reply_msg) {
362
jam 2010/11/12 18:08:00 nit:extra line
nduca 2010/11/12 19:45:32 Done.
363 RenderViewHost* host = RenderViewHost::FromID(renderer_id,
364 render_view_id);
365 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.
366
367 RenderWidgetHostView* view = host->view();
368 DCHECK(view);
369 gfx::PluginWindowHandle id = view->CreateCompositorHostWindow();
370
371 GpuHostMsg_CreateCompositorHostWindow::WriteReplyParams(reply_msg, id);
372
373 // 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
374 BrowserThread::PostTask(
375 BrowserThread::IO, FROM_HERE,
376 NewRunnableFunction(&SendDelayedReply, reply_msg));
377 }
378
379 void ScheduleCompositeDispatcher(int32 renderer_id, int32 render_view_id) {
380 RenderViewHost* host = RenderViewHost::FromID(renderer_id,
381 render_view_id);
382 DCHECK(host);
383
384
385 host->ScheduleComposite();
386 }
387 } // namespace
388
389 void GpuProcessHost::OnCreateCompositorHostWindow(
390 int32 renderer_id,
391 int32 render_view_id,
392 IPC::Message* reply_message) {
393 BrowserThread::PostTask(
394 BrowserThread::UI, FROM_HERE,
395 NewRunnableFunction(&CreateCompositorHostWindowDispatcher,
396 renderer_id, render_view_id, reply_message));
397 }
398
399 void GpuProcessHost::OnScheduleComposite(int renderer_id, int render_view_id) {
400 BrowserThread::PostTask(
401 BrowserThread::UI, FROM_HERE,
402 NewRunnableFunction(&ScheduleCompositeDispatcher,
403 renderer_id, render_view_id));
404 }
345 #endif 405 #endif
346 406
347 void GpuProcessHost::ReplyToRenderer( 407 void GpuProcessHost::ReplyToRenderer(
348 const IPC::ChannelHandle& channel, 408 const IPC::ChannelHandle& channel,
349 const GPUInfo& gpu_info, 409 const GPUInfo& gpu_info,
350 ResourceMessageFilter* filter) { 410 ResourceMessageFilter* filter) {
351 ViewMsg_GpuChannelEstablished* message = 411 ViewMsg_GpuChannelEstablished* message =
352 new ViewMsg_GpuChannelEstablished(channel, gpu_info); 412 new ViewMsg_GpuChannelEstablished(channel, gpu_info);
353 // If the renderer process is performing synchronous initialization, 413 // If the renderer process is performing synchronous initialization,
354 // it needs to handle this message before receiving the reply for 414 // it needs to handle this message before receiving the reply for
355 // the synchronous ViewHostMsg_SynchronizeGpu message. 415 // the synchronous ViewHostMsg_SynchronizeGpu message.
356 message->set_unblock(true); 416 message->set_unblock(true);
357 filter->Send(message); 417 filter->Send(message);
358 } 418 }
359 419
360 URLRequestContext* GpuProcessHost::GetRequestContext( 420 URLRequestContext* GpuProcessHost::GetRequestContext(
361 uint32 request_id, 421 uint32 request_id,
362 const ViewHostMsg_Resource_Request& request_data) { 422 const ViewHostMsg_Resource_Request& request_data) {
363 return NULL; 423 return NULL;
364 } 424 }
365 425
366 bool GpuProcessHost::CanShutdown() { 426 bool GpuProcessHost::CanShutdown() {
367 return true; 427 return true;
368 } 428 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698