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

Side by Side Diff: cc/resources/resource_pool.h

Issue 2130683002: [Experiment] purge-and-suspend Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated Created 4 years, 5 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 unified diff | Download patch
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 #ifndef CC_RESOURCES_RESOURCE_POOL_H_ 5 #ifndef CC_RESOURCES_RESOURCE_POOL_H_
6 #define CC_RESOURCES_RESOURCE_POOL_H_ 6 #define CC_RESOURCES_RESOURCE_POOL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <deque> 11 #include <deque>
12 #include <map> 12 #include <map>
13 #include <memory> 13 #include <memory>
14 14
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/memory_pressure_listener.h"
16 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
17 #include "base/trace_event/memory_dump_provider.h" 18 #include "base/trace_event/memory_dump_provider.h"
18 #include "cc/base/cc_export.h" 19 #include "cc/base/cc_export.h"
19 #include "cc/output/renderer.h" 20 #include "cc/output/renderer.h"
20 #include "cc/resources/resource.h" 21 #include "cc/resources/resource.h"
21 #include "cc/resources/resource_format.h" 22 #include "cc/resources/resource_format.h"
22 #include "cc/resources/scoped_resource.h" 23 #include "cc/resources/scoped_resource.h"
23 24
24 namespace cc { 25 namespace cc {
25 26
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 gfx::Rect invalidated_rect_; 121 gfx::Rect invalidated_rect_;
121 }; 122 };
122 123
123 void DidFinishUsingResource(std::unique_ptr<PoolResource> resource); 124 void DidFinishUsingResource(std::unique_ptr<PoolResource> resource);
124 void DeleteResource(std::unique_ptr<PoolResource> resource); 125 void DeleteResource(std::unique_ptr<PoolResource> resource);
125 static void UpdateResourceContentIdAndInvalidation( 126 static void UpdateResourceContentIdAndInvalidation(
126 PoolResource* resource, 127 PoolResource* resource,
127 uint64_t new_content_id, 128 uint64_t new_content_id,
128 const gfx::Rect& new_invalidated_rect); 129 const gfx::Rect& new_invalidated_rect);
129 130
131 void OnMemoryPressure(
132 base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level);
133
130 // Functions which manage periodic eviction of expired resources. 134 // Functions which manage periodic eviction of expired resources.
131 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now); 135 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now);
132 void EvictExpiredResources(); 136 void EvictExpiredResources();
133 void EvictResourcesNotUsedSince(base::TimeTicks time_limit); 137 void EvictResourcesNotUsedSince(base::TimeTicks time_limit);
134 bool HasEvictableResources() const; 138 bool HasEvictableResources() const;
135 base::TimeTicks GetUsageTimeForLRUResource() const; 139 base::TimeTicks GetUsageTimeForLRUResource() const;
136 140
137 ResourceProvider* resource_provider_; 141 ResourceProvider* resource_provider_;
138 bool use_gpu_memory_buffers_; 142 bool use_gpu_memory_buffers_;
139 size_t max_memory_usage_bytes_; 143 size_t max_memory_usage_bytes_;
140 size_t max_resource_count_; 144 size_t max_resource_count_;
141 size_t in_use_memory_usage_bytes_; 145 size_t in_use_memory_usage_bytes_;
142 size_t total_memory_usage_bytes_; 146 size_t total_memory_usage_bytes_;
143 size_t total_resource_count_; 147 size_t total_resource_count_;
144 148
145 // Holds most recently used resources at the front of the queue. 149 // Holds most recently used resources at the front of the queue.
146 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>; 150 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>;
147 ResourceDeque unused_resources_; 151 ResourceDeque unused_resources_;
148 ResourceDeque busy_resources_; 152 ResourceDeque busy_resources_;
149 153
154 std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_;
155
150 using InUseResourceMap = std::map<ResourceId, std::unique_ptr<PoolResource>>; 156 using InUseResourceMap = std::map<ResourceId, std::unique_ptr<PoolResource>>;
151 InUseResourceMap in_use_resources_; 157 InUseResourceMap in_use_resources_;
152 158
153 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 159 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
154 bool evict_expired_resources_pending_; 160 bool evict_expired_resources_pending_;
155 base::TimeDelta resource_expiration_delay_; 161 base::TimeDelta resource_expiration_delay_;
156 162
157 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_; 163 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_;
158 164
159 DISALLOW_COPY_AND_ASSIGN(ResourcePool); 165 DISALLOW_COPY_AND_ASSIGN(ResourcePool);
160 }; 166 };
161 167
162 } // namespace cc 168 } // namespace cc
163 169
164 #endif // CC_RESOURCES_RESOURCE_POOL_H_ 170 #endif // CC_RESOURCES_RESOURCE_POOL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698