| Index: gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc
|
| diff --git a/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc b/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc
|
| index dcd870ddd0c730cd05daf4296faa317f7d4f1083..b023bf2c20683f024ca2b7adacdd4a803138fe46 100644
|
| --- a/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc
|
| +++ b/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc
|
| @@ -107,6 +107,7 @@ void AsyncPixelTransferDelegateIdle::AsyncTexImage2D(
|
|
|
| shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task(
|
| id_,
|
| + this,
|
| base::Bind(
|
| &AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D,
|
| AsWeakPtr(),
|
| @@ -131,6 +132,7 @@ void AsyncPixelTransferDelegateIdle::AsyncTexSubImage2D(
|
|
|
| shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task(
|
| id_,
|
| + this,
|
| base::Bind(
|
| &AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D,
|
| AsWeakPtr(),
|
| @@ -255,8 +257,11 @@ void AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D(
|
| }
|
|
|
| AsyncPixelTransferManagerIdle::Task::Task(
|
| - uint64 transfer_id, const base::Closure& task)
|
| + uint64 transfer_id,
|
| + AsyncPixelTransferDelegate* delegate,
|
| + const base::Closure& task)
|
| : transfer_id(transfer_id),
|
| + delegate(delegate),
|
| task(task) {
|
| }
|
|
|
| @@ -298,13 +303,14 @@ void AsyncPixelTransferManagerIdle::AsyncNotifyCompletion(
|
|
|
| shared_state_.tasks.push_back(
|
| Task(0, // 0 transfer_id for notification tasks.
|
| - base::Bind(
|
| - &PerformNotifyCompletion,
|
| - mem_params,
|
| - base::Owned(new ScopedSafeSharedMemory(safe_shared_memory_pool(),
|
| - mem_params.shared_memory,
|
| - mem_params.shm_size)),
|
| - make_scoped_refptr(observer))));
|
| + NULL,
|
| + base::Bind(&PerformNotifyCompletion,
|
| + mem_params,
|
| + base::Owned(
|
| + new ScopedSafeSharedMemory(safe_shared_memory_pool(),
|
| + mem_params.shared_memory,
|
| + mem_params.shm_size)),
|
| + make_scoped_refptr(observer))));
|
| }
|
|
|
| uint32 AsyncPixelTransferManagerIdle::GetTextureUploadCount() {
|
| @@ -331,6 +337,15 @@ bool AsyncPixelTransferManagerIdle::NeedsProcessMorePendingTransfers() {
|
| return !shared_state_.tasks.empty();
|
| }
|
|
|
| +void AsyncPixelTransferManagerIdle::WaitAllAsyncTexImage2D() {
|
| + if (shared_state_.tasks.empty())
|
| + return;
|
| +
|
| + const Task& task = shared_state_.tasks.back();
|
| + if (task.delegate)
|
| + task.delegate->WaitForTransferCompletion();
|
| +}
|
| +
|
| AsyncPixelTransferDelegate*
|
| AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl(
|
| gles2::TextureRef* ref,
|
|
|