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 |