summaryrefslogtreecommitdiffstats
path: root/content/browser/power_save_blocker_mac.cc
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-13 23:51:47 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-13 23:51:47 +0000
commit0d3a82f4f4f13421d4416dffadfa639f9198021d (patch)
treee8b5662bb8bd4a1e9e5ba7cec7120570a5730172 /content/browser/power_save_blocker_mac.cc
parenta1f21078e98d60484442cae10554f68e2d5fa9c4 (diff)
downloadchromium_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.cc57
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));
}