1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "gpu/command_buffer/service/async_pixel_transfer_manager.h" 6 7#include "gpu/command_buffer/service/async_pixel_transfer_delegate.h" 8 9namespace gpu { 10 11AsyncPixelTransferCompletionObserver::AsyncPixelTransferCompletionObserver() {} 12 13AsyncPixelTransferCompletionObserver::~AsyncPixelTransferCompletionObserver() {} 14 15AsyncPixelTransferManager::AsyncPixelTransferManager() {} 16 17AsyncPixelTransferManager::~AsyncPixelTransferManager() { 18 if (manager_) 19 manager_->RemoveObserver(this); 20} 21 22void AsyncPixelTransferManager::Initialize(gles2::TextureManager* manager) { 23 manager_ = manager; 24 manager_->AddObserver(this); 25} 26 27AsyncPixelTransferDelegate* 28AsyncPixelTransferManager::CreatePixelTransferDelegate( 29 gles2::TextureRef* ref, 30 const AsyncTexImage2DParams& define_params) { 31 DCHECK(!GetPixelTransferDelegate(ref)); 32 AsyncPixelTransferDelegate* delegate = 33 CreatePixelTransferDelegateImpl(ref, define_params); 34 delegate_map_[ref] = make_linked_ptr(delegate); 35 return delegate; 36} 37 38AsyncPixelTransferDelegate* 39AsyncPixelTransferManager::GetPixelTransferDelegate( 40 gles2::TextureRef* ref) { 41 TextureToDelegateMap::iterator it = delegate_map_.find(ref); 42 if (it == delegate_map_.end()) { 43 return NULL; 44 } else { 45 return it->second.get(); 46 } 47} 48 49void AsyncPixelTransferManager::ClearPixelTransferDelegateForTest( 50 gles2::TextureRef* ref) { 51 TextureToDelegateMap::iterator it = delegate_map_.find(ref); 52 if (it != delegate_map_.end()) 53 delegate_map_.erase(it); 54} 55 56bool AsyncPixelTransferManager::AsyncTransferIsInProgress( 57 gles2::TextureRef* ref) { 58 AsyncPixelTransferDelegate* delegate = GetPixelTransferDelegate(ref); 59 return delegate && delegate->TransferIsInProgress(); 60} 61 62void AsyncPixelTransferManager::OnTextureManagerDestroying( 63 gles2::TextureManager* manager) { 64 // TextureManager should outlive AsyncPixelTransferManager. 65 NOTREACHED(); 66 manager_ = NULL; 67} 68 69void AsyncPixelTransferManager::OnTextureRefDestroying( 70 gles2::TextureRef* texture) { 71 TextureToDelegateMap::iterator it = delegate_map_.find(texture); 72 if (it != delegate_map_.end()) 73 delegate_map_.erase(it); 74} 75 76} // namespace gpu 77