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

Unified Diff: base/power_monitor/power_monitor.cc

Issue 2310343002: Defer suspend events on Android when audio is active. (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « base/power_monitor/power_monitor.h ('k') | content/browser/renderer_host/media/audio_renderer_host.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/power_monitor/power_monitor.cc
diff --git a/base/power_monitor/power_monitor.cc b/base/power_monitor/power_monitor.cc
index 11082df69577a44c7d3d12bcec1d1c834cf74c94..8a82dbb51b77f4b7f77d6c58ce6dcec1a838bb73 100644
--- a/base/power_monitor/power_monitor.cc
+++ b/base/power_monitor/power_monitor.cc
@@ -37,6 +37,16 @@ void PowerMonitor::RemoveObserver(PowerObserver* obs) {
observers_->RemoveObserver(obs);
}
+#if defined(OS_ANDROID)
+void PowerMonitor::DeferSuspendEvents(bool defer) {
+ LOG(ERROR) << __func__ << " : " << defer << " : " << std::hex << this;
+ base::AutoLock al(lock_);
+ should_defer_suspend_ = defer;
+ if (!should_defer_suspend_ && is_suspended_)
+ observers_->Notify(FROM_HERE, &PowerObserver::OnSuspend);
+}
+#endif
+
PowerMonitorSource* PowerMonitor::Source() {
return source_.get();
}
@@ -53,11 +63,29 @@ void PowerMonitor::NotifyPowerStateChange(bool battery_in_use) {
}
void PowerMonitor::NotifySuspend() {
- DVLOG(1) << "Power Suspending";
+ LOG(ERROR) << __func__ << " : " << std::hex << this;
+#if defined(OS_ANDROID)
+ {
+ base::AutoLock al(lock_);
+ if (should_defer_suspend_) {
+ is_suspended_ = true;
+ return;
+ }
+ }
+#endif
+
+ LOG(ERROR) << "Power Suspending : " << should_defer_suspend_;
observers_->Notify(FROM_HERE, &PowerObserver::OnSuspend);
}
void PowerMonitor::NotifyResume() {
+#if defined(OS_ANDROID)
+ {
+ base::AutoLock al(lock_);
+ is_suspended_ = false;
+ }
+#endif
+
DVLOG(1) << "Power Resuming";
observers_->Notify(FROM_HERE, &PowerObserver::OnResume);
}
« no previous file with comments | « base/power_monitor/power_monitor.h ('k') | content/browser/renderer_host/media/audio_renderer_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698