Index: chrome/browser/power_save_blocker_common.cc |
=================================================================== |
--- chrome/browser/power_save_blocker_common.cc (revision 0) |
+++ chrome/browser/power_save_blocker_common.cc (revision 0) |
@@ -0,0 +1,58 @@ |
+// Copyright (c) 2009 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 "chrome/browser/chrome_thread.h" |
+ |
+// Accessed only from the UI thread. |
+int PowerSaveBlocker::blocker_count_ = 0; |
+ |
+PowerSaveBlocker::PowerSaveBlocker(bool enable) : enabled_(false) { |
+ if (enable) |
+ Enable(); |
+} |
+ |
+PowerSaveBlocker::~PowerSaveBlocker(void) { |
+ Disable(); |
+} |
+ |
+void PowerSaveBlocker::Enable() { |
+ if (enabled_) |
+ return; |
+ |
+ enabled_ = true; |
+ PostAdjustBlockCount(1); |
+} |
+ |
+void PowerSaveBlocker::Disable() { |
+ if (!enabled_) |
+ return; |
+ |
+ enabled_ = false; |
+ PostAdjustBlockCount(-1); |
+} |
+ |
+ |
+void PowerSaveBlocker::PostAdjustBlockCount(int delta) { |
+ MessageLoop *ml = ChromeThread::GetMessageLoop(ChromeThread::UI); |
+ |
+ ml->PostTask(FROM_HERE, |
+ NewRunnableFunction(&PowerSaveBlocker::AdjustBlockCount, delta)); |
+} |
+ |
+// Called only from UI thread. |
+void PowerSaveBlocker::AdjustBlockCount(int delta) { |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
+ |
+ bool was_blocking = (blocker_count_ != 0); |
+ |
+ blocker_count_ += delta; |
+ |
+ bool is_blocking = (blocker_count_ != 0); |
+ |
+ DCHECK_GE(blocker_count_, 0); |
+ |
+ if (is_blocking != was_blocking) |
+ ApplyBlock(is_blocking); |
+} |
Property changes on: chrome\browser\power_save_blocker_common.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |