diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
commit | 679147eead574d186ebf3069647b4c23e8ccace6 (patch) | |
tree | fc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/gpu/command_buffer/service/async_pixel_transfer_manager.cc | |
download | qtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz |
Initial import.
Diffstat (limited to 'chromium/gpu/command_buffer/service/async_pixel_transfer_manager.cc')
-rw-r--r-- | chromium/gpu/command_buffer/service/async_pixel_transfer_manager.cc | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/chromium/gpu/command_buffer/service/async_pixel_transfer_manager.cc b/chromium/gpu/command_buffer/service/async_pixel_transfer_manager.cc new file mode 100644 index 00000000000..3084dd61964 --- /dev/null +++ b/chromium/gpu/command_buffer/service/async_pixel_transfer_manager.cc @@ -0,0 +1,76 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "gpu/command_buffer/service/async_pixel_transfer_manager.h" + +#include "gpu/command_buffer/service/async_pixel_transfer_delegate.h" + +namespace gpu { + +AsyncPixelTransferCompletionObserver::AsyncPixelTransferCompletionObserver() {} + +AsyncPixelTransferCompletionObserver::~AsyncPixelTransferCompletionObserver() {} + +AsyncPixelTransferManager::AsyncPixelTransferManager() {} + +AsyncPixelTransferManager::~AsyncPixelTransferManager() { + if (manager_) + manager_->RemoveObserver(this); +} + +void AsyncPixelTransferManager::Initialize(gles2::TextureManager* manager) { + manager_ = manager; + manager_->AddObserver(this); +} + +AsyncPixelTransferDelegate* +AsyncPixelTransferManager::CreatePixelTransferDelegate( + gles2::TextureRef* ref, + const AsyncTexImage2DParams& define_params) { + DCHECK(!GetPixelTransferDelegate(ref)); + AsyncPixelTransferDelegate* delegate = + CreatePixelTransferDelegateImpl(ref, define_params); + delegate_map_[ref] = make_linked_ptr(delegate); + return delegate; +} + +AsyncPixelTransferDelegate* +AsyncPixelTransferManager::GetPixelTransferDelegate( + gles2::TextureRef* ref) { + TextureToDelegateMap::iterator it = delegate_map_.find(ref); + if (it == delegate_map_.end()) { + return NULL; + } else { + return it->second.get(); + } +} + +void AsyncPixelTransferManager::ClearPixelTransferDelegateForTest( + gles2::TextureRef* ref) { + TextureToDelegateMap::iterator it = delegate_map_.find(ref); + if (it != delegate_map_.end()) + delegate_map_.erase(it); +} + +bool AsyncPixelTransferManager::AsyncTransferIsInProgress( + gles2::TextureRef* ref) { + AsyncPixelTransferDelegate* delegate = GetPixelTransferDelegate(ref); + return delegate && delegate->TransferIsInProgress(); +} + +void AsyncPixelTransferManager::OnTextureManagerDestroying( + gles2::TextureManager* manager) { + // TextureManager should outlive AsyncPixelTransferManager. + NOTREACHED(); + manager_ = NULL; +} + +void AsyncPixelTransferManager::OnTextureRefDestroying( + gles2::TextureRef* texture) { + TextureToDelegateMap::iterator it = delegate_map_.find(texture); + if (it != delegate_map_.end()) + delegate_map_.erase(it); +} + +} // namespace gpu |