summaryrefslogtreecommitdiffstats
path: root/cc/resources/resource_pool.h
diff options
context:
space:
mode:
authorreveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-16 05:47:59 +0000
committerreveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-16 05:47:59 +0000
commitd069439a2f947e1af88863ec3d9699c6fbafc261 (patch)
tree334682075751607ab3fa921778242bec87045cbd /cc/resources/resource_pool.h
parentb168871584f817ee586b5482bec6b4876ea66da7 (diff)
downloadchromium_src-d069439a2f947e1af88863ec3d9699c6fbafc261.zip
chromium_src-d069439a2f947e1af88863ec3d9699c6fbafc261.tar.gz
chromium_src-d069439a2f947e1af88863ec3d9699c6fbafc261.tar.bz2
cc: Prevent the tile manager from allocating more memory than allowed.
This adds a new ReduceMemoryUsage function to the resource pool. By calling this function in TileManager::ScheduleTasks after creating all resources needed to to call RasterWorkerPool::ScheduleTasks we free enough unused resources to ensure that we never go above the limit. This also fixes the use of the num_resources_limit by correctly accounting for all allocated resources. BUG=273140 TEST=cc_unittests --gtest_filter=TileManagerTests/TileManagerTest.RespectMemoryLimit* Review URL: https://chromiumcodereview.appspot.com/23231002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217951 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/resources/resource_pool.h')
-rw-r--r--cc/resources/resource_pool.h19
1 files changed, 12 insertions, 7 deletions
diff --git a/cc/resources/resource_pool.h b/cc/resources/resource_pool.h
index 309bf33..771650e 100644
--- a/cc/resources/resource_pool.h
+++ b/cc/resources/resource_pool.h
@@ -40,9 +40,11 @@ class CC_EXPORT ResourcePool {
GLenum format);
void ReleaseResource(scoped_ptr<ResourcePool::Resource>);
- void SetMemoryUsageLimits(size_t max_memory_usage_bytes,
- size_t max_unused_memory_usage_bytes,
- size_t num_resources_limit);
+ void SetResourceUsageLimits(size_t max_memory_usage_bytes,
+ size_t max_unused_memory_usage_bytes,
+ size_t max_resource_count);
+
+ void ReduceResourceUsage();
size_t total_memory_usage_bytes() const {
return memory_usage_bytes_;
@@ -50,23 +52,26 @@ class CC_EXPORT ResourcePool {
size_t acquired_memory_usage_bytes() const {
return memory_usage_bytes_ - unused_memory_usage_bytes_;
}
- size_t NumResources() const { return resources_.size(); }
+ size_t acquired_resource_count() const {
+ return resource_count_ - unused_resources_.size();
+ }
protected:
explicit ResourcePool(ResourceProvider* resource_provider);
- bool MemoryUsageTooHigh();
+ bool ResourceUsageTooHigh();
private:
ResourceProvider* resource_provider_;
size_t max_memory_usage_bytes_;
size_t max_unused_memory_usage_bytes_;
+ size_t max_resource_count_;
size_t memory_usage_bytes_;
size_t unused_memory_usage_bytes_;
- size_t num_resources_limit_;
+ size_t resource_count_;
typedef std::list<Resource*> ResourceList;
- ResourceList resources_;
+ ResourceList unused_resources_;
DISALLOW_COPY_AND_ASSIGN(ResourcePool);
};