diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-13 23:51:47 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-13 23:51:47 +0000 |
commit | 0d3a82f4f4f13421d4416dffadfa639f9198021d (patch) | |
tree | e8b5662bb8bd4a1e9e5ba7cec7120570a5730172 /content/browser/power_save_blocker_mac.cc | |
parent | a1f21078e98d60484442cae10554f68e2d5fa9c4 (diff) | |
download | chromium_src-0d3a82f4f4f13421d4416dffadfa639f9198021d.zip chromium_src-0d3a82f4f4f13421d4416dffadfa639f9198021d.tar.gz chromium_src-0d3a82f4f4f13421d4416dffadfa639f9198021d.tar.bz2 |
Add screen power save block level.
BUG=100054
TEST=no change
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=105401
Review URL: http://codereview.chromium.org/8251008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105415 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/power_save_blocker_mac.cc')
-rw-r--r-- | content/browser/power_save_blocker_mac.cc | 57 |
1 files changed, 25 insertions, 32 deletions
diff --git a/content/browser/power_save_blocker_mac.cc b/content/browser/power_save_blocker_mac.cc index ccf6d96..9acd130 100644 --- a/content/browser/power_save_blocker_mac.cc +++ b/content/browser/power_save_blocker_mac.cc @@ -6,7 +6,6 @@ #include <IOKit/pwr_mgt/IOPMLib.h> -#include "base/bind.h" #include "base/threading/platform_thread.h" #include "base/threading/thread.h" #include "content/browser/browser_thread.h" @@ -20,44 +19,35 @@ namespace { base::Thread* g_power_thread; IOPMAssertionID g_power_assertion; -void CreateSleepAssertion(PowerSaveBlocker::PowerSaveBlockerType type) { +void CreateSleepAssertion() { DCHECK_EQ(base::PlatformThread::CurrentId(), g_power_thread->thread_id()); IOReturn result; + DCHECK_EQ(g_power_assertion, kIOPMNullAssertionID); - if (g_power_assertion != kIOPMNullAssertionID) { - result = IOPMAssertionRelease(g_power_assertion); - g_power_assertion = kIOPMNullAssertionID; - LOG_IF(ERROR, result != kIOReturnSuccess) - << "IOPMAssertionRelease: " << result; - } + // Block just idle sleep; allow display sleep. + // See QA1340 <http://developer.apple.com/library/mac/#qa/qa2004/qa1340.html> + // for more details. + result = IOPMAssertionCreate(kIOPMAssertionTypeNoIdleSleep, + kIOPMAssertionLevelOn, + &g_power_assertion); + LOG_IF(ERROR, result != kIOReturnSuccess) + << "IOPMAssertionCreate: " << result; +} - CFStringRef level = NULL; - // See QA1340 <http://developer.apple.com/library/mac/#qa/qa1340/> for more - // details. - switch (type) { - case PowerSaveBlocker::kPowerSaveBlockPreventSystemSleep: - level = kIOPMAssertionTypeNoIdleSleep; - break; - case PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep: - level = kIOPMAssertionTypeNoDisplaySleep; - break; - case PowerSaveBlocker::kPowerSaveBlockPreventNone: - break; - } - if (level) { - result = IOPMAssertionCreate(level, - kIOPMAssertionLevelOn, - &g_power_assertion); - LOG_IF(ERROR, result != kIOReturnSuccess) - << "IOPMAssertionCreate: " << result; - } +void ReleaseSleepAssertion() { + DCHECK_EQ(base::PlatformThread::CurrentId(), g_power_thread->thread_id()); + IOReturn result; + DCHECK_NE(g_power_assertion, kIOPMNullAssertionID); + result = IOPMAssertionRelease(g_power_assertion); + g_power_assertion = kIOPMNullAssertionID; + LOG_IF(ERROR, result != kIOReturnSuccess) + << "IOPMAssertionRelease: " << result; } } // namespace // Called only from UI thread. -// static -void PowerSaveBlocker::ApplyBlock(PowerSaveBlockerType type) { +void PowerSaveBlocker::ApplyBlock(bool blocking) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); if (!g_power_thread) { @@ -66,6 +56,9 @@ void PowerSaveBlocker::ApplyBlock(PowerSaveBlockerType type) { g_power_thread->Start(); } - g_power_thread->message_loop()-> - PostTask(FROM_HERE, base::Bind(CreateSleepAssertion, type)); + MessageLoop* loop = g_power_thread->message_loop(); + if (blocking) + loop->PostTask(FROM_HERE, NewRunnableFunction(CreateSleepAssertion)); + else + loop->PostTask(FROM_HERE, NewRunnableFunction(ReleaseSleepAssertion)); } |