- add sources.
[platform/framework/web/crosswalk.git] / src / gpu / command_buffer / service / async_pixel_transfer_manager.cc
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
9 namespace gpu {
10
11 AsyncPixelTransferCompletionObserver::AsyncPixelTransferCompletionObserver() {}
12
13 AsyncPixelTransferCompletionObserver::~AsyncPixelTransferCompletionObserver() {}
14
15 AsyncPixelTransferManager::AsyncPixelTransferManager() {}
16
17 AsyncPixelTransferManager::~AsyncPixelTransferManager() {
18   if (manager_)
19     manager_->RemoveObserver(this);
20 }
21
22 void AsyncPixelTransferManager::Initialize(gles2::TextureManager* manager) {
23   manager_ = manager;
24   manager_->AddObserver(this);
25 }
26
27 AsyncPixelTransferDelegate*
28 AsyncPixelTransferManager::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
38 AsyncPixelTransferDelegate*
39 AsyncPixelTransferManager::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
49 void 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
56 bool AsyncPixelTransferManager::AsyncTransferIsInProgress(
57     gles2::TextureRef* ref) {
58   AsyncPixelTransferDelegate* delegate = GetPixelTransferDelegate(ref);
59   return delegate && delegate->TransferIsInProgress();
60 }
61
62 void AsyncPixelTransferManager::OnTextureManagerDestroying(
63     gles2::TextureManager* manager) {
64   // TextureManager should outlive AsyncPixelTransferManager.
65   NOTREACHED();
66   manager_ = NULL;
67 }
68
69 void 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