From 0d3a82f4f4f13421d4416dffadfa639f9198021d Mon Sep 17 00:00:00 2001 From: "avi@chromium.org" Date: Thu, 13 Oct 2011 23:51:47 +0000 Subject: 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 --- content/browser/power_save_blocker_mac.cc | 57 ++++++++++++++----------------- 1 file changed, 25 insertions(+), 32 deletions(-) (limited to 'content/browser/power_save_blocker_mac.cc') 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 -#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 + // for more details. + result = IOPMAssertionCreate(kIOPMAssertionTypeNoIdleSleep, + kIOPMAssertionLevelOn, + &g_power_assertion); + LOG_IF(ERROR, result != kIOReturnSuccess) + << "IOPMAssertionCreate: " << result; +} - CFStringRef level = NULL; - // See 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)); } -- cgit v1.1