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

Side by Side Diff: chrome/browser/gpu_process_host.cc

Issue 5528007: If compositor window already exists, then simply return it rather than compla... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years 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/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/thread.h" 10 #include "base/thread.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 #if defined(OS_LINUX) 179 #if defined(OS_LINUX)
180 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetViewXID, OnGetViewXID) 180 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetViewXID, OnGetViewXID)
181 IPC_MESSAGE_HANDLER(GpuHostMsg_ReleaseXID, OnReleaseXID) 181 IPC_MESSAGE_HANDLER(GpuHostMsg_ReleaseXID, OnReleaseXID)
182 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_ResizeXID, OnResizeXID) 182 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_ResizeXID, OnResizeXID)
183 #elif defined(OS_MACOSX) 183 #elif defined(OS_MACOSX)
184 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceSetIOSurface, 184 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceSetIOSurface,
185 OnAcceleratedSurfaceSetIOSurface) 185 OnAcceleratedSurfaceSetIOSurface)
186 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped, 186 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped,
187 OnAcceleratedSurfaceBuffersSwapped) 187 OnAcceleratedSurfaceBuffersSwapped)
188 #elif defined(OS_WIN) 188 #elif defined(OS_WIN)
189 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_CreateCompositorHostWindow, 189 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetCompositorHostWindow,
190 OnCreateCompositorHostWindow) 190 OnGetCompositorHostWindow)
191 #endif 191 #endif
192 // If the IO thread does not handle the message then automatically route it 192 // If the IO thread does not handle the message then automatically route it
193 // to the UI thread. The UI thread will report an error if it does not 193 // to the UI thread. The UI thread will report an error if it does not
194 // handle it. 194 // handle it.
195 IPC_MESSAGE_UNHANDLED(RouteOnUIThread(message)) 195 IPC_MESSAGE_UNHANDLED(RouteOnUIThread(message))
196 IPC_END_MESSAGE_MAP() 196 IPC_END_MESSAGE_MAP()
197 } 197 }
198 198
199 void GpuProcessHost::OnChannelEstablished( 199 void GpuProcessHost::OnChannelEstablished(
200 const IPC::ChannelHandle& channel_handle, 200 const IPC::ChannelHandle& channel_handle,
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 } 391 }
392 392
393 #elif defined(OS_WIN) 393 #elif defined(OS_WIN)
394 394
395 namespace { 395 namespace {
396 396
397 void SendDelayedReply(IPC::Message* reply_msg) { 397 void SendDelayedReply(IPC::Message* reply_msg) {
398 GpuProcessHost::Get()->Send(reply_msg); 398 GpuProcessHost::Get()->Send(reply_msg);
399 } 399 }
400 400
401 void CreateCompositorHostWindowDispatcher( 401 void GetCompositorHostWindowDispatcher(
402 int renderer_id, 402 int renderer_id,
403 int render_view_id, 403 int render_view_id,
404 IPC::Message* reply_msg) { 404 IPC::Message* reply_msg) {
405 RenderViewHost* host = RenderViewHost::FromID(renderer_id, 405 RenderViewHost* host = RenderViewHost::FromID(renderer_id,
406 render_view_id); 406 render_view_id);
407 if (!host) { 407 if (!host) {
408 GpuHostMsg_CreateCompositorHostWindow::WriteReplyParams(reply_msg, 408 GpuHostMsg_GetCompositorHostWindow::WriteReplyParams(reply_msg,
409 gfx::kNullPluginWindow); 409 gfx::kNullPluginWindow);
410 BrowserThread::PostTask( 410 BrowserThread::PostTask(
411 BrowserThread::IO, FROM_HERE, 411 BrowserThread::IO, FROM_HERE,
412 NewRunnableFunction(&SendDelayedReply, reply_msg)); 412 NewRunnableFunction(&SendDelayedReply, reply_msg));
413 return; 413 return;
414 } 414 }
415 415
416 RenderWidgetHostView* view = host->view(); 416 RenderWidgetHostView* view = host->view();
417 gfx::PluginWindowHandle id = view->CreateCompositorHostWindow(); 417 gfx::PluginWindowHandle id = view->GetCompositorHostWindow();
418 418
419 419
420 GpuHostMsg_CreateCompositorHostWindow::WriteReplyParams(reply_msg, id); 420 GpuHostMsg_GetCompositorHostWindow::WriteReplyParams(reply_msg, id);
421 BrowserThread::PostTask( 421 BrowserThread::PostTask(
422 BrowserThread::IO, FROM_HERE, 422 BrowserThread::IO, FROM_HERE,
423 NewRunnableFunction(&SendDelayedReply, reply_msg)); 423 NewRunnableFunction(&SendDelayedReply, reply_msg));
424 } 424 }
425 425
426 } // namespace 426 } // namespace
427 427
428 void GpuProcessHost::OnCreateCompositorHostWindow( 428 void GpuProcessHost::OnGetCompositorHostWindow(
429 int renderer_id, 429 int renderer_id,
430 int render_view_id, 430 int render_view_id,
431 IPC::Message* reply_message) { 431 IPC::Message* reply_message) {
432 BrowserThread::PostTask( 432 BrowserThread::PostTask(
433 BrowserThread::UI, FROM_HERE, 433 BrowserThread::UI, FROM_HERE,
434 NewRunnableFunction(&CreateCompositorHostWindowDispatcher, 434 NewRunnableFunction(&GetCompositorHostWindowDispatcher,
435 renderer_id, render_view_id, reply_message)); 435 renderer_id, render_view_id, reply_message));
436 } 436 }
437 437
438 #endif 438 #endif
439 439
440 void GpuProcessHost::SendEstablishChannelReply( 440 void GpuProcessHost::SendEstablishChannelReply(
441 const IPC::ChannelHandle& channel, 441 const IPC::ChannelHandle& channel,
442 const GPUInfo& gpu_info, 442 const GPUInfo& gpu_info,
443 ResourceMessageFilter* filter) { 443 ResourceMessageFilter* filter) {
444 ViewMsg_GpuChannelEstablished* message = 444 ViewMsg_GpuChannelEstablished* message =
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 false, // Never use the zygote (GPU plugin can't be sandboxed). 530 false, // Never use the zygote (GPU plugin can't be sandboxed).
531 base::environment_vector(), 531 base::environment_vector(),
532 #endif 532 #endif
533 cmd_line); 533 cmd_line);
534 534
535 UMA_HISTOGRAM_ENUMERATION("GPU.GPUProcessLifetimeEvents", 535 UMA_HISTOGRAM_ENUMERATION("GPU.GPUProcessLifetimeEvents",
536 kLaunched, kGPUProcessLifetimeEvent_Max); 536 kLaunched, kGPUProcessLifetimeEvent_Max);
537 return true; 537 return true;
538 } 538 }
539 539
OLDNEW
« no previous file with comments | « chrome/browser/gpu_process_host.h ('k') | chrome/browser/renderer_host/render_widget_host_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698