| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browser_gpu_channel_host_factory.h" | 5 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/profiler/scoped_tracker.h" | 10 #include "base/profiler/scoped_tracker.h" |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 case gfx::IO_SURFACE_BUFFER: | 274 case gfx::IO_SURFACE_BUFFER: |
| 275 // IOSurface backed images require GL_TEXTURE_RECTANGLE_ARB. | 275 // IOSurface backed images require GL_TEXTURE_RECTANGLE_ARB. |
| 276 return GL_TEXTURE_RECTANGLE_ARB; | 276 return GL_TEXTURE_RECTANGLE_ARB; |
| 277 default: | 277 default: |
| 278 return GL_TEXTURE_2D; | 278 return GL_TEXTURE_2D; |
| 279 } | 279 } |
| 280 } | 280 } |
| 281 | 281 |
| 282 BrowserGpuChannelHostFactory::BrowserGpuChannelHostFactory() | 282 BrowserGpuChannelHostFactory::BrowserGpuChannelHostFactory() |
| 283 : gpu_client_id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()), | 283 : gpu_client_id_(ChildProcessHostImpl::GenerateChildProcessUniqueId()), |
| 284 main_task_runner_(base::MessageLoopProxy::current()), |
| 284 shutdown_event_(new base::WaitableEvent(true, false)), | 285 shutdown_event_(new base::WaitableEvent(true, false)), |
| 285 gpu_memory_buffer_manager_( | 286 gpu_memory_buffer_manager_( |
| 286 new BrowserGpuMemoryBufferManager(this, gpu_client_id_)), | 287 new BrowserGpuMemoryBufferManager(this, gpu_client_id_)), |
| 287 gpu_host_id_(0), | 288 gpu_host_id_(0), |
| 288 next_create_gpu_memory_buffer_request_id_(0) { | 289 next_create_gpu_memory_buffer_request_id_(0) { |
| 289 } | 290 } |
| 290 | 291 |
| 291 BrowserGpuChannelHostFactory::~BrowserGpuChannelHostFactory() { | 292 BrowserGpuChannelHostFactory::~BrowserGpuChannelHostFactory() { |
| 292 DCHECK(IsMainThread()); | 293 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 293 if (pending_request_.get()) | 294 if (pending_request_.get()) |
| 294 pending_request_->Cancel(); | 295 pending_request_->Cancel(); |
| 295 for (size_t n = 0; n < established_callbacks_.size(); n++) | 296 for (size_t n = 0; n < established_callbacks_.size(); n++) |
| 296 established_callbacks_[n].Run(); | 297 established_callbacks_[n].Run(); |
| 297 shutdown_event_->Signal(); | 298 shutdown_event_->Signal(); |
| 298 } | 299 } |
| 299 | 300 |
| 300 bool BrowserGpuChannelHostFactory::IsMainThread() { | 301 scoped_refptr<base::SingleThreadTaskRunner> |
| 301 return BrowserThread::CurrentlyOn(BrowserThread::UI); | 302 BrowserGpuChannelHostFactory::GetMainTaskRunner() { |
| 302 } | 303 return main_task_runner_; |
| 303 | |
| 304 base::MessageLoop* BrowserGpuChannelHostFactory::GetMainLoop() { | |
| 305 return BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::UI); | |
| 306 } | 304 } |
| 307 | 305 |
| 308 scoped_refptr<base::MessageLoopProxy> | 306 scoped_refptr<base::MessageLoopProxy> |
| 309 BrowserGpuChannelHostFactory::GetIOLoopProxy() { | 307 BrowserGpuChannelHostFactory::GetIOLoopProxy() { |
| 310 return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); | 308 return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); |
| 311 } | 309 } |
| 312 | 310 |
| 313 scoped_ptr<base::SharedMemory> | 311 scoped_ptr<base::SharedMemory> |
| 314 BrowserGpuChannelHostFactory::AllocateSharedMemory(size_t size) { | 312 BrowserGpuChannelHostFactory::AllocateSharedMemory(size_t size) { |
| 315 scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); | 313 scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 } | 412 } |
| 415 | 413 |
| 416 GpuChannelHost* BrowserGpuChannelHostFactory::GetGpuChannel() { | 414 GpuChannelHost* BrowserGpuChannelHostFactory::GetGpuChannel() { |
| 417 if (gpu_channel_.get() && !gpu_channel_->IsLost()) | 415 if (gpu_channel_.get() && !gpu_channel_->IsLost()) |
| 418 return gpu_channel_.get(); | 416 return gpu_channel_.get(); |
| 419 | 417 |
| 420 return NULL; | 418 return NULL; |
| 421 } | 419 } |
| 422 | 420 |
| 423 void BrowserGpuChannelHostFactory::GpuChannelEstablished() { | 421 void BrowserGpuChannelHostFactory::GpuChannelEstablished() { |
| 424 DCHECK(IsMainThread()); | 422 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 425 DCHECK(pending_request_.get()); | 423 DCHECK(pending_request_.get()); |
| 426 if (pending_request_->channel_handle().name.empty()) { | 424 if (pending_request_->channel_handle().name.empty()) { |
| 427 DCHECK(!gpu_channel_.get()); | 425 DCHECK(!gpu_channel_.get()); |
| 428 } else { | 426 } else { |
| 429 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/466866 | 427 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/466866 |
| 430 // is fixed. | 428 // is fixed. |
| 431 tracked_objects::ScopedTracker tracking_profile1( | 429 tracked_objects::ScopedTracker tracking_profile1( |
| 432 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 430 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 433 "466866 BrowserGpuChannelHostFactory::GpuChannelEstablished1")); | 431 "466866 BrowserGpuChannelHostFactory::GpuChannelEstablished1")); |
| 434 GetContentClient()->SetGpuInfo(pending_request_->gpu_info()); | 432 GetContentClient()->SetGpuInfo(pending_request_->gpu_info()); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 557 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 560 | 558 |
| 561 CreateGpuMemoryBufferCallbackMap::iterator iter = | 559 CreateGpuMemoryBufferCallbackMap::iterator iter = |
| 562 create_gpu_memory_buffer_requests_.find(request_id); | 560 create_gpu_memory_buffer_requests_.find(request_id); |
| 563 DCHECK(iter != create_gpu_memory_buffer_requests_.end()); | 561 DCHECK(iter != create_gpu_memory_buffer_requests_.end()); |
| 564 iter->second.Run(handle); | 562 iter->second.Run(handle); |
| 565 create_gpu_memory_buffer_requests_.erase(iter); | 563 create_gpu_memory_buffer_requests_.erase(iter); |
| 566 } | 564 } |
| 567 | 565 |
| 568 } // namespace content | 566 } // namespace content |
| OLD | NEW |