| 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();
|
| }
|
|
|
|
|