| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_memory_buffer_manager.h" | 5 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 | 286 |
| 287 // Note: Unretained is safe as IO thread is stopped before manager is | 287 // Note: Unretained is safe as IO thread is stopped before manager is |
| 288 // destroyed. | 288 // destroyed. |
| 289 request->result = gpu::GpuMemoryBufferImplSharedMemory::Create( | 289 request->result = gpu::GpuMemoryBufferImplSharedMemory::Create( |
| 290 new_id, request->size, request->format, | 290 new_id, request->size, request->format, |
| 291 base::Bind( | 291 base::Bind( |
| 292 &GpuMemoryBufferDeleted, | 292 &GpuMemoryBufferDeleted, |
| 293 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), | 293 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), |
| 294 base::Bind(&BrowserGpuMemoryBufferManager::DestroyGpuMemoryBufferOnIO, | 294 base::Bind(&BrowserGpuMemoryBufferManager::DestroyGpuMemoryBufferOnIO, |
| 295 base::Unretained(this), new_id, request->client_id))); | 295 base::Unretained(this), new_id, request->client_id))); |
| 296 if (request->result) { |
| 297 buffers.find(new_id)->second.shared_memory_guid = |
| 298 request->result->GetHandle().handle.GetGUID(); |
| 299 } |
| 296 request->event.Signal(); | 300 request->event.Signal(); |
| 297 } | 301 } |
| 298 | 302 |
| 299 void BrowserGpuMemoryBufferManager::HandleGpuMemoryBufferCreatedOnIO( | 303 void BrowserGpuMemoryBufferManager::HandleGpuMemoryBufferCreatedOnIO( |
| 300 CreateGpuMemoryBufferRequest* request, | 304 CreateGpuMemoryBufferRequest* request, |
| 301 const gfx::GpuMemoryBufferHandle& handle) { | 305 const gfx::GpuMemoryBufferHandle& handle) { |
| 302 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 306 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 303 | 307 |
| 304 // Early out if factory failed to create the buffer. | 308 // Early out if factory failed to create the buffer. |
| 305 if (handle.is_null()) { | 309 if (handle.is_null()) { |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 buffers.erase(buffer_it); | 408 buffers.erase(buffer_it); |
| 405 callback.Run(gfx::GpuMemoryBufferHandle()); | 409 callback.Run(gfx::GpuMemoryBufferHandle()); |
| 406 } | 410 } |
| 407 return; | 411 return; |
| 408 } | 412 } |
| 409 | 413 |
| 410 // Store the type and host id of this buffer so it can be cleaned up if the | 414 // Store the type and host id of this buffer so it can be cleaned up if the |
| 411 // client is removed. | 415 // client is removed. |
| 412 buffer_it->second.type = handle.type; | 416 buffer_it->second.type = handle.type; |
| 413 buffer_it->second.gpu_host_id = gpu_host_id; | 417 buffer_it->second.gpu_host_id = gpu_host_id; |
| 418 buffer_it->second.shared_memory_guid = handle.handle.GetGUID(); |
| 414 | 419 |
| 415 callback.Run(handle); | 420 callback.Run(handle); |
| 416 } | 421 } |
| 417 | 422 |
| 418 void BrowserGpuMemoryBufferManager::DestroyGpuMemoryBufferOnIO( | 423 void BrowserGpuMemoryBufferManager::DestroyGpuMemoryBufferOnIO( |
| 419 gfx::GpuMemoryBufferId id, | 424 gfx::GpuMemoryBufferId id, |
| 420 int client_id, | 425 int client_id, |
| 421 const gpu::SyncToken& sync_token) { | 426 const gpu::SyncToken& sync_token) { |
| 422 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 427 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 423 DCHECK(clients_.find(client_id) != clients_.end()); | 428 DCHECK(clients_.find(client_id) != clients_.end()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 format(format), | 473 format(format), |
| 469 usage(usage), | 474 usage(usage), |
| 470 gpu_host_id(gpu_host_id) {} | 475 gpu_host_id(gpu_host_id) {} |
| 471 | 476 |
| 472 BrowserGpuMemoryBufferManager::BufferInfo::BufferInfo(const BufferInfo& other) = | 477 BrowserGpuMemoryBufferManager::BufferInfo::BufferInfo(const BufferInfo& other) = |
| 473 default; | 478 default; |
| 474 | 479 |
| 475 BrowserGpuMemoryBufferManager::BufferInfo::~BufferInfo() {} | 480 BrowserGpuMemoryBufferManager::BufferInfo::~BufferInfo() {} |
| 476 | 481 |
| 477 } // namespace content | 482 } // namespace content |
| OLD | NEW |