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..19452cba4b5cd3870d9379d652e13c275a17125a 100644 |
| --- a/base/memory/memory_pressure_monitor_mac.cc |
| +++ b/base/memory/memory_pressure_monitor_mac.cc |
| @@ -8,6 +8,7 @@ |
| #include <stddef.h> |
| #include <sys/sysctl.h> |
| +#include "base/logging.h" |
| #include "base/mac/mac_util.h" |
| // Redeclare for partial 10.9 availability. |
| @@ -32,11 +33,12 @@ MemoryPressureMonitor::MemoryPressureLevelForMacMemoryPressure( |
| } |
| void MemoryPressureMonitor::NotifyMemoryPressureChanged( |
| - dispatch_source_s* event_source) { |
| + dispatch_source_s* event_source, |
| + 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(memory_pressure_level); |
| } |
| MemoryPressureMonitor::MemoryPressureMonitor() |
| @@ -49,7 +51,8 @@ MemoryPressureMonitor::MemoryPressureMonitor() |
| DISPATCH_MEMORYPRESSURE_WARN | DISPATCH_MEMORYPRESSURE_CRITICAL, |
| dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))) { |
| dispatch_source_set_event_handler(memory_level_event_source_, ^{ |
| - NotifyMemoryPressureChanged(memory_level_event_source_.get()); |
| + NotifyMemoryPressureChanged(memory_level_event_source_.get(), |
| + dispatch_callback_); |
|
danakj
2016/07/08 00:03:53
does this not bind the current callback forever? m
bashi
2016/07/08 00:13:05
Not sure how blocks work too but seems a bug. I'll
|
| }); |
| dispatch_resume(memory_level_event_source_); |
| } |
| @@ -67,5 +70,9 @@ MemoryPressureMonitor::GetCurrentPressureLevel() const { |
| return MemoryPressureLevelForMacMemoryPressure(mac_memory_pressure); |
| } |
| +void MemoryPressureMonitor::SetDispatchCallback(DispatchCallback* callback) { |
| + dispatch_callback_ = callback; |
| +} |
| + |
| } // namespace mac |
| } // namespace base |