Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(192)

Unified Diff: content/browser/power_save_blocker_mac.cc

Issue 8251008: Add screen power save block level. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ready Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: 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 9acd130f53931a6ff46594f9489e80cddf4b29ca..314dfe3b671a24cd7ecb28184ba7280c52cadd76 100644
--- a/content/browser/power_save_blocker_mac.cc
+++ b/content/browser/power_save_blocker_mac.cc
@@ -19,35 +19,43 @@ namespace {
base::Thread* g_power_thread;
IOPMAssertionID g_power_assertion;
-void CreateSleepAssertion() {
+void CreateSleepAssertion(PowerSaveBlocker::PowerSaveBlockerType type) {
DCHECK_EQ(base::PlatformThread::CurrentId(), g_power_thread->thread_id());
IOReturn result;
- DCHECK_EQ(g_power_assertion, kIOPMNullAssertionID);
- // 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;
-}
+ if (g_power_assertion != kIOPMNullAssertionID) {
+ result = IOPMAssertionRelease(g_power_assertion);
+ g_power_assertion = kIOPMNullAssertionID;
+ LOG_IF(ERROR, result != kIOReturnSuccess)
+ << "IOPMAssertionRelease: " << 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;
+ 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;
+ default:
+ break;
+ }
+ if (level) {
+ result = IOPMAssertionCreate(level,
+ kIOPMAssertionLevelOn,
+ &g_power_assertion);
+ LOG_IF(ERROR, result != kIOReturnSuccess)
+ << "IOPMAssertionCreate: " << result;
+ }
}
} // namespace
// Called only from UI thread.
-void PowerSaveBlocker::ApplyBlock(bool blocking) {
+void PowerSaveBlocker::ApplyBlock(PowerSaveBlockerType type) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (!g_power_thread) {
@@ -56,9 +64,6 @@ void PowerSaveBlocker::ApplyBlock(bool blocking) {
g_power_thread->Start();
}
- MessageLoop* loop = g_power_thread->message_loop();
- if (blocking)
- loop->PostTask(FROM_HERE, NewRunnableFunction(CreateSleepAssertion));
- else
- loop->PostTask(FROM_HERE, NewRunnableFunction(ReleaseSleepAssertion));
+ g_power_thread->message_loop()->
+ PostTask(FROM_HERE, NewRunnableFunction(CreateSleepAssertion, type));
}

Powered by Google App Engine
This is Rietveld 408576698