Chromium Code Reviews| Index: cc/resources/resource_pool.cc |
| diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc |
| index 2c4e5fd2f0ca54e110a942aa00fdcb3e2af11b0c..39b17e8c4ca4cb06f1b176b4917a4a1b01511ec7 100644 |
| --- a/cc/resources/resource_pool.cc |
| +++ b/cc/resources/resource_pool.cc |
| @@ -10,6 +10,7 @@ |
| #include <algorithm> |
| #include <utility> |
| +#include "base/allocator/allocator_extension.h" |
| #include "base/format_macros.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/threading/thread_task_runner_handle.h" |
| @@ -75,6 +76,9 @@ ResourcePool::ResourcePool(ResourceProvider* resource_provider, |
| weak_ptr_factory_(this) { |
| base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( |
| this, "cc::ResourcePool", task_runner_.get()); |
| + |
| + memory_pressure_listener_.reset(new base::MemoryPressureListener( |
| + base::Bind(&ResourcePool::OnMemoryPressure, base::Unretained(this)))); |
| } |
| ResourcePool::~ResourcePool() { |
| @@ -294,6 +298,13 @@ void ResourcePool::SetResourceUsageLimits(size_t max_memory_usage_bytes, |
| ReduceResourceUsage(); |
| } |
| +void ResourcePool::OnMemoryPressure( |
| + base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { |
| + while (!unused_resources_.empty()) |
| + DeleteResource(PopBack(&unused_resources_)); |
| + base::allocator::ReleaseFreeMemory(); |
|
esprehn
2016/08/05 23:00:57
yeah...
tasak
2016/08/08 04:47:36
Acknowledged.
|
| +} |
| + |
| void ResourcePool::ReduceResourceUsage() { |
| while (!unused_resources_.empty()) { |
| if (!ResourceUsageTooHigh()) |