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

Side by Side Diff: content/browser/gpu/gpu_process_host.cc

Issue 8617001: A few less TOUCH_UIs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Ooops 's/&&/||' Created 9 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
« no previous file with comments | « content/browser/gpu/gpu_process_host.h ('k') | content/browser/gpu/gpu_process_host_ui_shim.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "content/browser/gpu/gpu_process_host.h" 5 #include "content/browser/gpu/gpu_process_host.h"
6 6
7 #include "base/base_switches.h" 7 #include "base/base_switches.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 renderer_id, cause); 90 renderer_id, cause);
91 if (host) { 91 if (host) {
92 host->Send(message); 92 host->Send(message);
93 } else { 93 } else {
94 delete message; 94 delete message;
95 } 95 }
96 } 96 }
97 97
98 } // anonymous namespace 98 } // anonymous namespace
99 99
100 #if defined(TOOLKIT_USES_GTK) && !defined(TOUCH_UI) 100 #if defined(TOOLKIT_USES_GTK)
101 // Used to put a lock on surfaces so that the window to which the GPU 101 // Used to put a lock on surfaces so that the window to which the GPU
102 // process is drawing to doesn't disappear while it is drawing when 102 // process is drawing to doesn't disappear while it is drawing when
103 // a tab is closed. 103 // a tab is closed.
104 class GpuProcessHost::SurfaceRef { 104 class GpuProcessHost::SurfaceRef {
105 public: 105 public:
106 explicit SurfaceRef(gfx::PluginWindowHandle surface); 106 explicit SurfaceRef(gfx::PluginWindowHandle surface);
107 ~SurfaceRef(); 107 ~SurfaceRef();
108 private: 108 private:
109 gfx::PluginWindowHandle surface_; 109 gfx::PluginWindowHandle surface_;
110 }; 110 };
111 111
112 GpuProcessHost::SurfaceRef::SurfaceRef(gfx::PluginWindowHandle surface) 112 GpuProcessHost::SurfaceRef::SurfaceRef(gfx::PluginWindowHandle surface)
113 : surface_(surface) { 113 : surface_(surface) {
114 GtkNativeViewManager* manager = GtkNativeViewManager::GetInstance(); 114 GtkNativeViewManager* manager = GtkNativeViewManager::GetInstance();
115 if (!manager->AddRefPermanentXID(surface_)) { 115 if (!manager->AddRefPermanentXID(surface_)) {
116 LOG(ERROR) << "Surface " << surface << " cannot be referenced."; 116 LOG(ERROR) << "Surface " << surface << " cannot be referenced.";
117 } 117 }
118 } 118 }
119 119
120 GpuProcessHost::SurfaceRef::~SurfaceRef() { 120 GpuProcessHost::SurfaceRef::~SurfaceRef() {
121 BrowserThread::PostTask(BrowserThread::UI, 121 BrowserThread::PostTask(BrowserThread::UI,
122 FROM_HERE, 122 FROM_HERE,
123 new ReleasePermanentXIDDispatcher(surface_)); 123 new ReleasePermanentXIDDispatcher(surface_));
124 } 124 }
125 #endif // defined(TOOLKIT_USES_GTK) && !defined(TOUCH_UI) 125 #endif // defined(TOOLKIT_USES_GTK)
126 126
127 // This class creates a GPU thread (instead of a GPU process), when running 127 // This class creates a GPU thread (instead of a GPU process), when running
128 // with --in-process-gpu or --single-process. 128 // with --in-process-gpu or --single-process.
129 class GpuMainThread : public base::Thread { 129 class GpuMainThread : public base::Thread {
130 public: 130 public:
131 explicit GpuMainThread(const std::string& channel_id) 131 explicit GpuMainThread(const std::string& channel_id)
132 : base::Thread("Chrome_InProcGpuThread"), 132 : base::Thread("Chrome_InProcGpuThread"),
133 channel_id_(channel_id), 133 channel_id_(channel_id),
134 gpu_process_(NULL), 134 gpu_process_(NULL),
135 child_thread_(NULL) { 135 child_thread_(NULL) {
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 393
394 void GpuProcessHost::CreateViewCommandBuffer( 394 void GpuProcessHost::CreateViewCommandBuffer(
395 gfx::PluginWindowHandle compositing_surface, 395 gfx::PluginWindowHandle compositing_surface,
396 int32 render_view_id, 396 int32 render_view_id,
397 int32 renderer_id, 397 int32 renderer_id,
398 const GPUCreateCommandBufferConfig& init_params, 398 const GPUCreateCommandBufferConfig& init_params,
399 CreateCommandBufferCallback* callback) { 399 CreateCommandBufferCallback* callback) {
400 DCHECK(CalledOnValidThread()); 400 DCHECK(CalledOnValidThread());
401 linked_ptr<CreateCommandBufferCallback> wrapped_callback(callback); 401 linked_ptr<CreateCommandBufferCallback> wrapped_callback(callback);
402 402
403 #if defined(TOOLKIT_USES_GTK) && !defined(TOUCH_UI) 403 #if defined(TOOLKIT_USES_GTK)
404 ViewID view_id(renderer_id, render_view_id); 404 ViewID view_id(renderer_id, render_view_id);
405 405
406 // There should only be one such command buffer (for the compositor). In 406 // There should only be one such command buffer (for the compositor). In
407 // practice, if the GPU process lost a context, GraphicsContext3D with 407 // practice, if the GPU process lost a context, GraphicsContext3D with
408 // associated command buffer and view surface will not be gone until new 408 // associated command buffer and view surface will not be gone until new
409 // one is in place and all layers are reattached. 409 // one is in place and all layers are reattached.
410 linked_ptr<SurfaceRef> surface_ref; 410 linked_ptr<SurfaceRef> surface_ref;
411 SurfaceRefMap::iterator it = surface_refs_.find(view_id); 411 SurfaceRefMap::iterator it = surface_refs_.find(view_id);
412 if (it != surface_refs_.end()) 412 if (it != surface_refs_.end())
413 surface_ref = (*it).second; 413 surface_ref = (*it).second;
414 else 414 else
415 surface_ref.reset(new SurfaceRef(compositing_surface)); 415 surface_ref.reset(new SurfaceRef(compositing_surface));
416 #endif // defined(TOOLKIT_USES_GTK) && defined(TOUCH_UI) 416 #endif // defined(TOOLKIT_USES_GTK)
417 417
418 if (compositing_surface != gfx::kNullPluginWindow && 418 if (compositing_surface != gfx::kNullPluginWindow &&
419 Send(new GpuMsg_CreateViewCommandBuffer( 419 Send(new GpuMsg_CreateViewCommandBuffer(
420 compositing_surface, render_view_id, renderer_id, init_params))) { 420 compositing_surface, render_view_id, renderer_id, init_params))) {
421 create_command_buffer_requests_.push(wrapped_callback); 421 create_command_buffer_requests_.push(wrapped_callback);
422 #if defined(TOOLKIT_USES_GTK) && !defined(TOUCH_UI) 422 #if defined(TOOLKIT_USES_GTK)
423 surface_refs_.insert(std::pair<ViewID, linked_ptr<SurfaceRef> >( 423 surface_refs_.insert(std::pair<ViewID, linked_ptr<SurfaceRef> >(
424 view_id, surface_ref)); 424 view_id, surface_ref));
425 #endif 425 #endif
426 } else { 426 } else {
427 CreateCommandBufferError(wrapped_callback.release(), MSG_ROUTING_NONE); 427 CreateCommandBufferError(wrapped_callback.release(), MSG_ROUTING_NONE);
428 } 428 }
429 } 429 }
430 430
431 void GpuProcessHost::OnChannelEstablished( 431 void GpuProcessHost::OnChannelEstablished(
432 const IPC::ChannelHandle& channel_handle) { 432 const IPC::ChannelHandle& channel_handle) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 if (route_id == MSG_ROUTING_NONE) 465 if (route_id == MSG_ROUTING_NONE)
466 CreateCommandBufferError(callback.release(), route_id); 466 CreateCommandBufferError(callback.release(), route_id);
467 else 467 else
468 callback->Run(route_id); 468 callback->Run(route_id);
469 } 469 }
470 } 470 }
471 471
472 void GpuProcessHost::OnDestroyCommandBuffer( 472 void GpuProcessHost::OnDestroyCommandBuffer(
473 gfx::PluginWindowHandle window, int32 renderer_id, 473 gfx::PluginWindowHandle window, int32 renderer_id,
474 int32 render_view_id) { 474 int32 render_view_id) {
475 #if defined(TOOLKIT_USES_GTK) && !defined(TOUCH_UI) 475 #if defined(TOOLKIT_USES_GTK)
476 ViewID view_id(renderer_id, render_view_id); 476 ViewID view_id(renderer_id, render_view_id);
477 SurfaceRefMap::iterator it = surface_refs_.find(view_id); 477 SurfaceRefMap::iterator it = surface_refs_.find(view_id);
478 if (it != surface_refs_.end()) 478 if (it != surface_refs_.end())
479 surface_refs_.erase(it); 479 surface_refs_.erase(it);
480 #endif // defined(TOOLKIT_USES_GTK) && !defined(TOUCH_UI) 480 #endif // defined(TOOLKIT_USES_GTK)
481 } 481 }
482 482
483 void GpuProcessHost::OnGraphicsInfoCollected(const content::GPUInfo& gpu_info) { 483 void GpuProcessHost::OnGraphicsInfoCollected(const content::GPUInfo& gpu_info) {
484 GpuDataManager::GetInstance()->UpdateGpuInfo(gpu_info); 484 GpuDataManager::GetInstance()->UpdateGpuInfo(gpu_info);
485 } 485 }
486 486
487 bool GpuProcessHost::CanShutdown() { 487 bool GpuProcessHost::CanShutdown() {
488 return true; 488 return true;
489 } 489 }
490 490
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 scoped_ptr<EstablishChannelCallback> wrapped_callback(callback); 647 scoped_ptr<EstablishChannelCallback> wrapped_callback(callback);
648 wrapped_callback->Run(channel_handle, renderer_process_for_gpu, gpu_info); 648 wrapped_callback->Run(channel_handle, renderer_process_for_gpu, gpu_info);
649 } 649 }
650 650
651 void GpuProcessHost::CreateCommandBufferError( 651 void GpuProcessHost::CreateCommandBufferError(
652 CreateCommandBufferCallback* callback, int32 route_id) { 652 CreateCommandBufferCallback* callback, int32 route_id) {
653 scoped_ptr<GpuProcessHost::CreateCommandBufferCallback> 653 scoped_ptr<GpuProcessHost::CreateCommandBufferCallback>
654 wrapped_callback(callback); 654 wrapped_callback(callback);
655 callback->Run(route_id); 655 callback->Run(route_id);
656 } 656 }
OLDNEW
« no previous file with comments | « content/browser/gpu/gpu_process_host.h ('k') | content/browser/gpu/gpu_process_host_ui_shim.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698