Chromium Code Reviews| Index: base/memory/memory_pressure_monitor_mac.cc |
| diff --git a/base/memory/memory_pressure_monitor_mac.cc b/base/memory/memory_pressure_monitor_mac.cc |
| index ec807eeec32e02fc3de28ce434f633bb7909e1c4..d3430e94ca45a1ad9150c3cfe8f3342faf02ffe6 100644 |
| --- a/base/memory/memory_pressure_monitor_mac.cc |
| +++ b/base/memory/memory_pressure_monitor_mac.cc |
| @@ -8,6 +8,8 @@ |
| #include <stddef.h> |
| #include <sys/sysctl.h> |
| +#include "base/bind.h" |
| +#include "base/logging.h" |
| #include "base/mac/mac_util.h" |
| // Redeclare for partial 10.9 availability. |
| @@ -32,11 +34,12 @@ MemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressure( |
| } |
| void MemoryPressureMonitor::NotifyMemoryPressureChanged( |
| - dispatch_source_s* event_source) { |
| + dispatch_source_s* event_source, |
| + const MemoryPressureMonitor::DispatchCallback& dispatch_callback) { |
| int mac_memory_pressure = dispatch_source_get_data(event_source); |
| MemoryPressureListener::MemoryPressureLevel memory_pressure_level = |
| MemoryPressureLevelForMacMemoryPressure(mac_memory_pressure); |
| - MemoryPressureListener::NotifyMemoryPressure(memory_pressure_level); |
| + dispatch_callback.Run(memory_pressure_level); |
| } |
| MemoryPressureMonitor::MemoryPressureMonitor() |
| @@ -47,9 +50,12 @@ MemoryPressureMonitor::MemoryPressureMonitor() |
| DISPATCH_SOURCE_TYPE_MEMORYPRESSURE, |
| 0, |
| DISPATCH_MEMORYPRESSURE_WARN | DISPATCH_MEMORYPRESSURE_CRITICAL, |
| - dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))) { |
| + dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))), |
| + dispatch_callback_( |
| + base::Bind(&MemoryPressureListener::NotifyMemoryPressure)) { |
| dispatch_source_set_event_handler(memory_level_event_source_, ^{ |
|
bashi
2016/07/08 01:58:28
I read [1] and it seems that we can use member var
|
| - NotifyMemoryPressureChanged(memory_level_event_source_.get()); |
| + NotifyMemoryPressureChanged(memory_level_event_source_.get(), |
| + dispatch_callback_); |
| }); |
| dispatch_resume(memory_level_event_source_); |
| } |
| @@ -67,5 +73,10 @@ MemoryPressureMonitor::GetCurrentPressureLevel() const { |
| return MemoryPressureLevelForMacMemoryPressure(mac_memory_pressure); |
| } |
| +void MemoryPressureMonitor::SetDispatchCallback( |
| + const DispatchCallback& callback) { |
| + dispatch_callback_ = callback; |
| +} |
| + |
| } // namespace mac |
| } // namespace base |