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

Unified Diff: components/scheduler/renderer/renderer_scheduler_impl.cc

Issue 2017763003: Suspend more task queues for background renderers (experimental) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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: components/scheduler/renderer/renderer_scheduler_impl.cc
diff --git a/components/scheduler/renderer/renderer_scheduler_impl.cc b/components/scheduler/renderer/renderer_scheduler_impl.cc
index 5add212d251922ed56c12f00ebc0a7a214e913e9..6292013f7ae0ba8458337964a256856c67b210b9 100644
--- a/components/scheduler/renderer/renderer_scheduler_impl.cc
+++ b/components/scheduler/renderer/renderer_scheduler_impl.cc
@@ -121,6 +121,7 @@ RendererSchedulerImpl::MainThreadOnly::MainThreadOnly(
renderer_backgrounded(false),
timer_queue_suspension_when_backgrounded_enabled(false),
timer_queue_suspended_when_backgrounded(false),
+ queue_suspended(false),
was_shutdown(false),
loading_tasks_seem_expensive(false),
timer_tasks_seem_expensive(false),
@@ -832,6 +833,12 @@ void RendererSchedulerImpl::UpdatePolicyLocked(UpdateType update_type) {
new_policy.timer_queue_policy.is_enabled = false;
}
+ if (MainThreadOnly().queue_suspended) {
+ new_policy.compositor_queue_policy.is_enabled = false;
+ new_policy.loading_queue_policy.is_enabled = false;
+ new_policy.control_queue_policy.is_enabled = false;
+ }
+
// Tracing is done before the early out check, because it's quite possible we
// will otherwise miss this information in traces.
TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
@@ -882,7 +889,13 @@ void RendererSchedulerImpl::UpdatePolicyLocked(UpdateType update_type) {
MainThreadOnly().current_policy.default_queue_policy,
new_policy.default_queue_policy);
- DCHECK(compositor_task_runner_->IsQueueEnabled());
+ ApplyTaskQueuePolicy(helper_.ControlTaskRunner().get(),
+ MainThreadOnly().current_policy.control_queue_policy,
+ new_policy.control_queue_policy);
+ ApplyTaskQueuePolicy(helper_.ControlAfterWakeUpTaskRunner().get(),
+ MainThreadOnly().current_policy.control_queue_policy,
+ new_policy.control_queue_policy);
+
MainThreadOnly().current_policy = new_policy;
}
@@ -1214,6 +1227,7 @@ void RendererSchedulerImpl::SuspendTimerQueueWhenBackgrounded() {
return;
MainThreadOnly().timer_queue_suspended_when_backgrounded = true;
+ MainThreadOnly().queue_suspended = true;
ForceUpdatePolicy();
}
@@ -1223,6 +1237,7 @@ void RendererSchedulerImpl::ResumeTimerQueueWhenForegrounded() {
return;
MainThreadOnly().timer_queue_suspended_when_backgrounded = false;
+ MainThreadOnly().queue_suspended = false;
ForceUpdatePolicy();
}

Powered by Google App Engine
This is Rietveld 408576698