Index: base/power_monitor/power_monitor_mac.mm |
diff --git a/base/power_monitor/power_monitor_mac.mm b/base/power_monitor/power_monitor_mac.mm |
index ee906f63c8f438adce187a1d758eb1db1af86fbb..c7a93263f3de449f2995fc711a1f4a377adf9fdd 100644 |
--- a/base/power_monitor/power_monitor_mac.mm |
+++ b/base/power_monitor/power_monitor_mac.mm |
@@ -5,6 +5,8 @@ |
// Implementation based on sample code from |
// http://developer.apple.com/library/mac/#qa/qa1340/_index.html. |
+#include "base/power_monitor/power_monitor_device_source.h" |
+ |
#include "base/power_monitor/power_monitor.h" |
#include <IOKit/pwr_mgt/IOPMLib.h> |
@@ -12,10 +14,10 @@ |
namespace base { |
-void ProcessPowerEventHelper(PowerMonitor::PowerEvent event) { |
+void ProcessPowerEventHelper(PowerMonitorSource::PowerEvent event) { |
DCHECK(PowerMonitor::Get()); |
if (PowerMonitor::Get()) |
- PowerMonitor::Get()->ProcessPowerEvent(event); |
+ PowerMonitor::Get()->Source()->ProcessPowerEvent(event); |
} |
namespace { |
@@ -29,14 +31,19 @@ void SystemPowerEventCallback(void*, |
natural_t message_type, |
void* message_argument) { |
switch (message_type) { |
+ // If this message is not handled the system may delay sleep for 30 seconds |
Ken Russell (switch to Gerrit)
2013/06/27 13:08:23
Nice find! How did you discover the need for this?
|
+ case kIOMessageCanSystemSleep: |
+ IOAllowPowerChange(g_system_power_io_port, |
bajones
2013/07/01 20:21:58
See http://developer.apple.com/library/mac/#qa/qa1
|
+ reinterpret_cast<intptr_t>(message_argument)); |
+ break; |
case kIOMessageSystemWillSleep: |
- ProcessPowerEventHelper(base::PowerMonitor::SUSPEND_EVENT); |
+ ProcessPowerEventHelper(base::PowerMonitorSource::SUSPEND_EVENT); |
IOAllowPowerChange(g_system_power_io_port, |
reinterpret_cast<intptr_t>(message_argument)); |
break; |
case kIOMessageSystemWillPowerOn: |
- ProcessPowerEventHelper(PowerMonitor::RESUME_EVENT); |
+ ProcessPowerEventHelper(PowerMonitorSource::RESUME_EVENT); |
break; |
} |
} |
@@ -49,7 +56,7 @@ void SystemPowerEventCallback(void*, |
// See crbug.com/83783 . |
// static |
-void PowerMonitor::AllocateSystemIOPorts() { |
+void PowerMonitorDeviceSource::AllocateSystemIOPorts() { |
DCHECK_EQ(g_system_power_io_port, 0u); |
// Notification port allocated by IORegisterForSystemPower. |
@@ -60,7 +67,7 @@ void PowerMonitor::AllocateSystemIOPorts() { |
DCHECK_NE(g_system_power_io_port, 0u); |
} |
-void PowerMonitor::PlatformInit() { |
+void PowerMonitorDeviceSource::PlatformInit() { |
// Need to call AllocateSystemIOPorts() before creating a PowerMonitor |
// object. |
DCHECK_NE(g_system_power_io_port, 0u); |
@@ -74,7 +81,7 @@ void PowerMonitor::PlatformInit() { |
kCFRunLoopCommonModes); |
} |
-void PowerMonitor::PlatformDestroy() { |
+void PowerMonitorDeviceSource::PlatformDestroy() { |
DCHECK_NE(g_system_power_io_port, 0u); |
if (g_system_power_io_port == 0) |
return; |