OLD | NEW |
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 Loading... |
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_ |
OLD | NEW |