Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(596)

Side by Side Diff: cc/resource_pool.cc

Issue 11637022: Send memory management policies to the tile manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "cc/resource_pool.h" 5 #include "cc/resource_pool.h"
6 6
7 #include "cc/resource_provider.h" 7 #include "cc/resource_provider.h"
8 8
9 namespace cc { 9 namespace cc {
10 10
(...skipping 16 matching lines...) Expand all
27 resource_provider_->deleteResource(id()); 27 resource_provider_->deleteResource(id());
28 } 28 }
29 29
30 ResourcePool::ResourcePool(ResourceProvider* resource_provider) 30 ResourcePool::ResourcePool(ResourceProvider* resource_provider)
31 : resource_provider_(resource_provider), 31 : resource_provider_(resource_provider),
32 max_memory_usage_bytes_(0), 32 max_memory_usage_bytes_(0),
33 memory_usage_bytes_(0) { 33 memory_usage_bytes_(0) {
34 } 34 }
35 35
36 ResourcePool::~ResourcePool() { 36 ResourcePool::~ResourcePool() {
37 SetMaxMemoryUsageBytes(0); 37 while (!resources_.empty()) {
38 Resource* resource = resources_.front();
39 resources_.pop_front();
40 memory_usage_bytes_ -= resource->bytes();
41 delete resource;
42 }
38 } 43 }
39 44
40 scoped_ptr<ResourcePool::Resource> ResourcePool::AcquireResource( 45 scoped_ptr<ResourcePool::Resource> ResourcePool::AcquireResource(
41 const gfx::Size& size, GLenum format) { 46 const gfx::Size& size, GLenum format) {
42 for (ResourceList::iterator it = resources_.begin(); 47 for (ResourceList::iterator it = resources_.begin();
43 it != resources_.end(); ++it) { 48 it != resources_.end(); ++it) {
44 Resource* resource = *it; 49 Resource* resource = *it;
45 50
46 if (resource->size() != size) 51 if (resource->size() != size)
47 continue; 52 continue;
(...skipping 14 matching lines...) Expand all
62 void ResourcePool::ReleaseResource( 67 void ResourcePool::ReleaseResource(
63 scoped_ptr<ResourcePool::Resource> resource) { 68 scoped_ptr<ResourcePool::Resource> resource) {
64 if (memory_usage_bytes_ > max_memory_usage_bytes_) { 69 if (memory_usage_bytes_ > max_memory_usage_bytes_) {
65 memory_usage_bytes_ -= resource->bytes(); 70 memory_usage_bytes_ -= resource->bytes();
66 return; 71 return;
67 } 72 }
68 73
69 resources_.push_back(resource.release()); 74 resources_.push_back(resource.release());
70 } 75 }
71 76
72 void ResourcePool::SetMaxMemoryUsageBytes(size_t max_memory_usage_bytes) {
73 max_memory_usage_bytes_ = max_memory_usage_bytes;
74
75 while (!resources_.empty()) {
76 if (memory_usage_bytes_ <= max_memory_usage_bytes_)
77 break;
78 Resource* resource = resources_.front();
79 resources_.pop_front();
80 memory_usage_bytes_ -= resource->bytes();
81 delete resource;
82 }
83 }
84
85 } // namespace cc 77 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698