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 0ee5481dcf20774973ab936515d0273eee81992c..0ef81cdf4537d33d9aa0dc4cd7fc40936eb38c47 100644 |
--- a/components/scheduler/renderer/renderer_scheduler_impl.cc |
+++ b/components/scheduler/renderer/renderer_scheduler_impl.cc |
@@ -12,6 +12,7 @@ |
#include "cc/output/begin_frame_args.h" |
#include "components/scheduler/base/task_queue_impl.h" |
#include "components/scheduler/base/task_queue_selector.h" |
+#include "components/scheduler/base/virtual_time_domain.h" |
#include "components/scheduler/child/scheduler_tqm_delegate.h" |
#include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h" |
@@ -41,6 +42,7 @@ RendererSchedulerImpl::RendererSchedulerImpl( |
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
"RendererSchedulerIdlePeriod", |
base::TimeDelta()), |
+ throttling_helper_(this, "renderer.scheduler"), |
render_widget_scheduler_signals_(this), |
control_task_runner_(helper_.ControlTaskRunner()), |
compositor_task_runner_( |
@@ -176,6 +178,11 @@ scoped_refptr<TaskQueue> RendererSchedulerImpl::TimerTaskRunner() { |
return default_timer_task_runner_; |
} |
+scoped_refptr<TaskQueue> RendererSchedulerImpl::ControlTaskRunner() { |
+ helper_.CheckOnValidThread(); |
+ return helper_.ControlTaskRunner(); |
+} |
+ |
scoped_refptr<TaskQueue> RendererSchedulerImpl::NewLoadingTaskRunner( |
const char* name) { |
helper_.CheckOnValidThread(); |
@@ -535,7 +542,7 @@ bool RendererSchedulerImpl::ShouldYieldForHighPriorityWork() { |
case UseCase::MAIN_THREAD_GESTURE: |
case UseCase::SYNCHRONIZED_GESTURE: |
- return !compositor_task_runner_->IsQueueEmpty() || |
+ return compositor_task_runner_->HasPendingImmediateTask() || |
MainThreadOnly().touchstart_expected_soon; |
case UseCase::TOUCHSTART: |
@@ -1046,4 +1053,16 @@ double RendererSchedulerImpl::MonotonicallyIncreasingTimeSeconds() const { |
static_cast<double>(base::Time::kMicrosecondsPerSecond); |
} |
+void RendererSchedulerImpl::RegisterTimeDomain(TimeDomain* time_domain) { |
+ helper_.RegisterTimeDomain(time_domain); |
+} |
+ |
+void RendererSchedulerImpl::UnregisterTimeDomain(TimeDomain* time_domain) { |
+ helper_.UnregisterTimeDomain(time_domain); |
+} |
+ |
+base::TickClock* RendererSchedulerImpl::tick_clock() const { |
+ return helper_.scheduler_tqm_delegate().get(); |
+} |
+ |
} // namespace scheduler |