| 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 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 next_create_gpu_memory_buffer_request_id_(0) { | 288 next_create_gpu_memory_buffer_request_id_(0) { |
| 289 } | 289 } |
| 290 | 290 |
| 291 BrowserGpuChannelHostFactory::~BrowserGpuChannelHostFactory() { | 291 BrowserGpuChannelHostFactory::~BrowserGpuChannelHostFactory() { |
| 292 DCHECK(IsMainThread()); | 292 DCHECK(IsMainThread()); |
| 293 if (pending_request_.get()) | 293 if (pending_request_.get()) |
| 294 pending_request_->Cancel(); | 294 pending_request_->Cancel(); |
| 295 for (size_t n = 0; n < established_callbacks_.size(); n++) | 295 for (size_t n = 0; n < established_callbacks_.size(); n++) |
| 296 established_callbacks_[n].Run(); | 296 established_callbacks_[n].Run(); |
| 297 shutdown_event_->Signal(); | 297 shutdown_event_->Signal(); |
| 298 if (gpu_channel_) { |
| 299 gpu_channel_->DestroyChannel(); |
| 300 gpu_channel_ = NULL; |
| 301 } |
| 298 } | 302 } |
| 299 | 303 |
| 300 bool BrowserGpuChannelHostFactory::IsMainThread() { | 304 bool BrowserGpuChannelHostFactory::IsMainThread() { |
| 301 return BrowserThread::CurrentlyOn(BrowserThread::UI); | 305 return BrowserThread::CurrentlyOn(BrowserThread::UI); |
| 302 } | 306 } |
| 303 | 307 |
| 304 base::MessageLoop* BrowserGpuChannelHostFactory::GetMainLoop() { | 308 base::MessageLoop* BrowserGpuChannelHostFactory::GetMainLoop() { |
| 305 return BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::UI); | 309 return BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::UI); |
| 306 } | 310 } |
| 307 | 311 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 return gpu_channel_.get(); | 393 return gpu_channel_.get(); |
| 390 } | 394 } |
| 391 #endif | 395 #endif |
| 392 | 396 |
| 393 void BrowserGpuChannelHostFactory::EstablishGpuChannel( | 397 void BrowserGpuChannelHostFactory::EstablishGpuChannel( |
| 394 CauseForGpuLaunch cause_for_gpu_launch, | 398 CauseForGpuLaunch cause_for_gpu_launch, |
| 395 const base::Closure& callback) { | 399 const base::Closure& callback) { |
| 396 if (gpu_channel_.get() && gpu_channel_->IsLost()) { | 400 if (gpu_channel_.get() && gpu_channel_->IsLost()) { |
| 397 DCHECK(!pending_request_.get()); | 401 DCHECK(!pending_request_.get()); |
| 398 // Recreate the channel if it has been lost. | 402 // Recreate the channel if it has been lost. |
| 403 gpu_channel_->DestroyChannel(); |
| 399 gpu_channel_ = NULL; | 404 gpu_channel_ = NULL; |
| 400 } | 405 } |
| 401 | 406 |
| 402 if (!gpu_channel_.get() && !pending_request_.get()) { | 407 if (!gpu_channel_.get() && !pending_request_.get()) { |
| 403 // We should only get here if the context was lost. | 408 // We should only get here if the context was lost. |
| 404 pending_request_ = EstablishRequest::Create( | 409 pending_request_ = EstablishRequest::Create( |
| 405 cause_for_gpu_launch, gpu_client_id_, gpu_host_id_); | 410 cause_for_gpu_launch, gpu_client_id_, gpu_host_id_); |
| 406 } | 411 } |
| 407 | 412 |
| 408 if (!callback.is_null()) { | 413 if (!callback.is_null()) { |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 564 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 560 | 565 |
| 561 CreateGpuMemoryBufferCallbackMap::iterator iter = | 566 CreateGpuMemoryBufferCallbackMap::iterator iter = |
| 562 create_gpu_memory_buffer_requests_.find(request_id); | 567 create_gpu_memory_buffer_requests_.find(request_id); |
| 563 DCHECK(iter != create_gpu_memory_buffer_requests_.end()); | 568 DCHECK(iter != create_gpu_memory_buffer_requests_.end()); |
| 564 iter->second.Run(handle); | 569 iter->second.Run(handle); |
| 565 create_gpu_memory_buffer_requests_.erase(iter); | 570 create_gpu_memory_buffer_requests_.erase(iter); |
| 566 } | 571 } |
| 567 | 572 |
| 568 } // namespace content | 573 } // namespace content |
| OLD | NEW |