diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-24 15:53:49 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-24 15:53:49 +0000 |
commit | 71a565a7f31ec351a46a726e46b3d4194bba348a (patch) | |
tree | 2cc34b453db501462066ad694e9f14bace29a10f /chrome/browser/power_save_blocker_mac.cc | |
parent | ce8a9ca8389aa6a39c5622653e4ff9266cc0be18 (diff) | |
download | chromium_src-71a565a7f31ec351a46a726e46b3d4194bba348a.zip chromium_src-71a565a7f31ec351a46a726e46b3d4194bba348a.tar.gz chromium_src-71a565a7f31ec351a46a726e46b3d4194bba348a.tar.bz2 |
Add sleep blocker for Mac.
BUG=34081
TEST=as in bug
Review URL: http://codereview.chromium.org/5360001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67267 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/power_save_blocker_mac.cc')
-rw-r--r-- | chrome/browser/power_save_blocker_mac.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/chrome/browser/power_save_blocker_mac.cc b/chrome/browser/power_save_blocker_mac.cc new file mode 100644 index 0000000..12a40ec --- /dev/null +++ b/chrome/browser/power_save_blocker_mac.cc @@ -0,0 +1,36 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/power_save_blocker.h" + +#include <IOKit/pwr_mgt/IOPMLib.h> + +#include "chrome/browser/browser_thread.h" + +// Run on the UI thread only. +void PowerSaveBlocker::ApplyBlock(bool blocking) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + + // Block just idle sleep; allow display sleep. + // See QA1340 <http://developer.apple.com/library/mac/#qa/qa2004/qa1340.html> + // for more details. + + static IOPMAssertionID sleep_assertion = kIOPMNullAssertionID; + IOReturn result; + if (blocking) { + DCHECK_EQ(sleep_assertion, kIOPMNullAssertionID); + result = IOPMAssertionCreate( + kIOPMAssertionTypeNoIdleSleep, + kIOPMAssertionLevelOn, + &sleep_assertion); + } else { + DCHECK_NE(sleep_assertion, kIOPMNullAssertionID); + result = IOPMAssertionRelease(sleep_assertion); + sleep_assertion = kIOPMNullAssertionID; + } + + if (result != kIOReturnSuccess) { + NOTREACHED(); + } +} |