Chromium Code Reviews| Index: cc/raster/staging_buffer_pool.cc |
| diff --git a/cc/raster/staging_buffer_pool.cc b/cc/raster/staging_buffer_pool.cc |
| index 99fb43843105ece60a3ac000cbd3236ce601c003..5885394c9fa939f7bb76da8c26e881d0cdba484d 100644 |
| --- a/cc/raster/staging_buffer_pool.cc |
| +++ b/cc/raster/staging_buffer_pool.cc |
| @@ -6,6 +6,7 @@ |
| #include <memory> |
| +#include "base/allocator/allocator_extension.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/threading/thread_task_runner_handle.h" |
| @@ -141,6 +142,9 @@ StagingBufferPool::StagingBufferPool(base::SequencedTaskRunner* task_runner, |
| this, "cc::StagingBufferPool", base::ThreadTaskRunnerHandle::Get()); |
| reduce_memory_usage_callback_ = base::Bind( |
| &StagingBufferPool::ReduceMemoryUsage, weak_ptr_factory_.GetWeakPtr()); |
| + |
| + memory_pressure_listener_.reset(new base::MemoryPressureListener(base::Bind( |
| + &StagingBufferPool::OnMemoryPressure, base::Unretained(this)))); |
| } |
| StagingBufferPool::~StagingBufferPool() { |
| @@ -186,6 +190,16 @@ bool StagingBufferPool::OnMemoryDump( |
| return true; |
| } |
| +void StagingBufferPool::OnMemoryPressure( |
| + base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { |
| + base::AutoLock lock(lock_); |
| + if (buffers_.empty()) |
| + return; |
| + |
| + ReleaseBuffersNotUsedSince(base::TimeTicks() + base::TimeDelta::Max()); |
| + base::allocator::ReleaseFreeMemory(); |
|
esprehn
2016/08/05 23:00:57
is this is very strange inside the cc/raster code.
tasak
2016/08/08 04:47:36
Acknowledged.
Yeah, I agree that MemoryCoordinato
|
| +} |
| + |
| void StagingBufferPool::AddStagingBuffer(const StagingBuffer* staging_buffer, |
| ResourceFormat format) { |
| lock_.AssertAcquired(); |