OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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) { | |
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
| |
355 GpuProcessHost::Get()->Send(reply_msg); | |
356 } | |
357 | |
358 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.
| |
359 int32 render_view_id, | |
360 IPC::Message* reply_msg) { | |
361 | |
362 RenderViewHost* host = RenderViewHost::FromID(renderer_id, | |
363 render_view_id); | |
364 DCHECK(host); | |
365 | |
366 RenderWidgetHostView* view = host->view(); | |
367 DCHECK(view); | |
368 gfx::PluginWindowHandle id = view->CreateCompositorHostWindow(); | |
369 | |
370 GpuHostMsg_CreateCompositorHostWindow::WriteReplyParams(reply_msg, id); | |
371 | |
372 // Have to reply from IO thread. | |
373 BrowserThread::PostTask( | |
374 BrowserThread::IO, FROM_HERE, | |
375 NewRunnableFunction(&SendDelayedReply, reply_msg)); | |
376 } | |
377 | |
378 void ScheduleCompositeDispatcher(int32 renderer_id, int32 render_view_id) { | |
379 RenderViewHost* host = RenderViewHost::FromID(renderer_id, | |
380 render_view_id); | |
381 DCHECK(host); | |
382 | |
383 | |
384 host->ScheduleComposite(); | |
385 } | |
386 } // namespace | |
387 | |
388 void GpuProcessHost::OnCreateCompositorHostWindow( | |
389 int32 renderer_id, | |
390 int32 render_view_id, | |
391 IPC::Message* reply_message) { | |
392 BrowserThread::PostTask( | |
393 BrowserThread::UI, FROM_HERE, | |
394 NewRunnableFunction(&CreateCompositorHostWindowDispatcher, | |
395 renderer_id, render_view_id, reply_message)); | |
396 } | |
397 | |
398 void GpuProcessHost::OnScheduleComposite(int renderer_id, int render_view_id) { | |
399 BrowserThread::PostTask( | |
400 BrowserThread::UI, FROM_HERE, | |
401 NewRunnableFunction(&ScheduleCompositeDispatcher, | |
402 renderer_id, render_view_id)); | |
403 } | |
345 #endif | 404 #endif |
346 | 405 |
347 void GpuProcessHost::ReplyToRenderer( | 406 void GpuProcessHost::ReplyToRenderer( |
348 const IPC::ChannelHandle& channel, | 407 const IPC::ChannelHandle& channel, |
349 const GPUInfo& gpu_info, | 408 const GPUInfo& gpu_info, |
350 ResourceMessageFilter* filter) { | 409 ResourceMessageFilter* filter) { |
351 ViewMsg_GpuChannelEstablished* message = | 410 ViewMsg_GpuChannelEstablished* message = |
352 new ViewMsg_GpuChannelEstablished(channel, gpu_info); | 411 new ViewMsg_GpuChannelEstablished(channel, gpu_info); |
353 // If the renderer process is performing synchronous initialization, | 412 // If the renderer process is performing synchronous initialization, |
354 // it needs to handle this message before receiving the reply for | 413 // it needs to handle this message before receiving the reply for |
355 // the synchronous ViewHostMsg_SynchronizeGpu message. | 414 // the synchronous ViewHostMsg_SynchronizeGpu message. |
356 message->set_unblock(true); | 415 message->set_unblock(true); |
357 filter->Send(message); | 416 filter->Send(message); |
358 } | 417 } |
359 | 418 |
360 URLRequestContext* GpuProcessHost::GetRequestContext( | 419 URLRequestContext* GpuProcessHost::GetRequestContext( |
361 uint32 request_id, | 420 uint32 request_id, |
362 const ViewHostMsg_Resource_Request& request_data) { | 421 const ViewHostMsg_Resource_Request& request_data) { |
363 return NULL; | 422 return NULL; |
364 } | 423 } |
365 | 424 |
366 bool GpuProcessHost::CanShutdown() { | 425 bool GpuProcessHost::CanShutdown() { |
367 return true; | 426 return true; |
368 } | 427 } |
OLD | NEW |