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

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

Issue 1441073006: Move throttling of background timers into the renderer scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed various dchecks Created 5 years, 1 month 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 0ee5481dcf20774973ab936515d0273eee81992c..64d904f3da57928a29a94533b70e0ef2307936d7 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_(
@@ -66,6 +68,10 @@ RendererSchedulerImpl::RendererSchedulerImpl(
default_loading_task_runner_ = NewLoadingTaskRunner("default_loading_tq");
default_timer_task_runner_ = NewTimerTaskRunner("default_timer_tq");
+ virtual_time_domain_ = make_scoped_refptr(
+ new VirtualTimeDomain(helper_.scheduler_tqm_delegate()->NowTicks()));
+ helper_.RegisterTimeDomain(virtual_time_domain_);
+
TRACE_EVENT_OBJECT_CREATED_WITH_ID(
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler",
this);
@@ -78,6 +84,8 @@ RendererSchedulerImpl::~RendererSchedulerImpl() {
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler",
this);
+ helper_.UnregisterTimeDomain(virtual_time_domain_);
+
for (const scoped_refptr<TaskQueue>& loading_queue : loading_task_runners_) {
loading_queue->RemoveTaskObserver(
&MainThreadOnly().loading_task_cost_estimator);
@@ -176,6 +184,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();
@@ -1046,4 +1059,14 @@ double RendererSchedulerImpl::MonotonicallyIncreasingTimeSeconds() const {
static_cast<double>(base::Time::kMicrosecondsPerSecond);
}
+void RendererSchedulerImpl::RegisterTimeDomain(
+ const scoped_refptr<TimeDomain>& time_domain) {
+ helper_.RegisterTimeDomain(time_domain);
+}
+
+void RendererSchedulerImpl::UnregisterTimeDomain(
+ const scoped_refptr<TimeDomain>& time_domain) {
+ helper_.UnregisterTimeDomain(time_domain);
+}
+
} // namespace scheduler

Powered by Google App Engine
This is Rietveld 408576698