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

Unified Diff: cc/resources/resource_pool.h

Issue 1293873005: Expire resources in ResourcePool after non-use (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@re-use
Patch Set: Created 5 years, 4 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | cc/resources/resource_pool.cc » ('j') | cc/resources/resource_pool.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/resource_pool.h
diff --git a/cc/resources/resource_pool.h b/cc/resources/resource_pool.h
index 20a66f06a4f964ef049f9a9d7060e9ef2cb047ae..a83ada335780ce20667b838c41bf058c104dfb16 100644
--- a/cc/resources/resource_pool.h
+++ b/cc/resources/resource_pool.h
@@ -77,14 +77,26 @@ class CC_EXPORT ResourcePool : public base::trace_event::MemoryDumpProvider {
uint64_t content_id() const { return content_id_; }
void set_content_id(uint64_t content_id) { content_id_ = content_id; }
+ base::TimeTicks last_usage() const { return last_usage_; }
+ void set_last_usage(base::TimeTicks time) { last_usage_ = time; }
+
private:
explicit PoolResource(ResourceProvider* resource_provider)
: ScopedResource(resource_provider), content_id_(0) {}
uint64_t content_id_;
+ base::TimeTicks last_usage_;
};
void DidFinishUsingResource(scoped_ptr<PoolResource> resource);
void DeleteResource(scoped_ptr<PoolResource> resource);
+ void DeleteUnusedResource(scoped_ptr<PoolResource> resource);
+
+ // Functions which manage periodic eviction of expired resources.
+ void ScheduleEvictExpiredResources();
+ void EvictExpiredResources();
+ void EvictResourcesNotUsedSince(base::TimeTicks time_limit);
+ bool HasEvictableResources() const;
+ base::TimeTicks GetUsageTimeForLRUResource() const;
ResourceProvider* resource_provider_;
const GLenum target_;
@@ -102,6 +114,12 @@ class CC_EXPORT ResourcePool : public base::trace_event::MemoryDumpProvider {
using ResourceMap = base::ScopedPtrMap<ResourceId, scoped_ptr<PoolResource>>;
ResourceMap in_use_resources_;
+ bool evict_expired_resources_pending_;
+ base::TimeDelta resource_expiration_delay_;
+ base::Closure evict_expired_resources_callback_;
+
+ base::WeakPtrFactory<ResourcePool> weak_ptr_factory_;
+
DISALLOW_COPY_AND_ASSIGN(ResourcePool);
};
« no previous file with comments | « no previous file | cc/resources/resource_pool.cc » ('j') | cc/resources/resource_pool.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698