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

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: build fix 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..bdcf6f4d65a303af1712bafab04ec1fa4a2c8c63 100644
--- a/content/browser/power_save_blocker_mac.cc
+++ b/content/browser/power_save_blocker_mac.cc
@@ -6,6 +6,7 @@
#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"
@@ -19,35 +20,44 @@ 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) {
+// static
+void PowerSaveBlocker::ApplyBlock(PowerSaveBlockerType type) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (!g_power_thread) {
@@ -56,9 +66,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, base::Bind(CreateSleepAssertion, type));
}

Powered by Google App Engine
This is Rietveld 408576698