| Index: content/renderer/scheduler/renderer_scheduler_impl.cc
|
| diff --git a/content/renderer/scheduler/renderer_scheduler_impl.cc b/content/renderer/scheduler/renderer_scheduler_impl.cc
|
| index 7f006144fda6759d20b349cf7ce9c70627c0ace2..9601860a7a4739aa80fa53b1d98cf67f8a5226f6 100644
|
| --- a/content/renderer/scheduler/renderer_scheduler_impl.cc
|
| +++ b/content/renderer/scheduler/renderer_scheduler_impl.cc
|
| @@ -62,38 +62,38 @@ RendererSchedulerImpl::~RendererSchedulerImpl() {
|
| }
|
|
|
| void RendererSchedulerImpl::Shutdown() {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| task_queue_manager_.reset();
|
| }
|
|
|
| scoped_refptr<base::SingleThreadTaskRunner>
|
| RendererSchedulerImpl::DefaultTaskRunner() {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| return default_task_runner_;
|
| }
|
|
|
| scoped_refptr<base::SingleThreadTaskRunner>
|
| RendererSchedulerImpl::CompositorTaskRunner() {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| return compositor_task_runner_;
|
| }
|
|
|
| scoped_refptr<SingleThreadIdleTaskRunner>
|
| RendererSchedulerImpl::IdleTaskRunner() {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| return idle_task_runner_;
|
| }
|
|
|
| scoped_refptr<base::SingleThreadTaskRunner>
|
| RendererSchedulerImpl::LoadingTaskRunner() {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| return loading_task_runner_;
|
| }
|
|
|
| void RendererSchedulerImpl::WillBeginFrame(const cc::BeginFrameArgs& args) {
|
| TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
|
| "RendererSchedulerImpl::WillBeginFrame", "args", args.AsValue());
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| if (!task_queue_manager_)
|
| return;
|
|
|
| @@ -104,7 +104,7 @@ void RendererSchedulerImpl::WillBeginFrame(const cc::BeginFrameArgs& args) {
|
| void RendererSchedulerImpl::DidCommitFrameToCompositor() {
|
| TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
|
| "RendererSchedulerImpl::DidCommitFrameToCompositor");
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| if (!task_queue_manager_)
|
| return;
|
|
|
| @@ -145,8 +145,17 @@ void RendererSchedulerImpl::UpdateForInputEvent() {
|
| last_input_time_ = Now();
|
| }
|
|
|
| +bool RendererSchedulerImpl::IsHighPriorityWorkAnticipated() {
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| + if (!task_queue_manager_)
|
| + return false;
|
| +
|
| + MaybeUpdatePolicy();
|
| + return SchedulerPolicy() == COMPOSITOR_PRIORITY_POLICY;
|
| +}
|
| +
|
| bool RendererSchedulerImpl::ShouldYieldForHighPriorityWork() {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| if (!task_queue_manager_)
|
| return false;
|
|
|
| @@ -155,23 +164,25 @@ bool RendererSchedulerImpl::ShouldYieldForHighPriorityWork() {
|
| // work outstanding. Note: even though the control queue is higher priority
|
| // we don't yield for it since these tasks are not user-provided work and they
|
| // are only intended to run before the next task, not interrupt the tasks.
|
| + // Note: This function could conceivably be implemented in terms of
|
| + // |IsHighPriorityWorkAnticipated|, but for clarity is not.
|
| return SchedulerPolicy() == COMPOSITOR_PRIORITY_POLICY &&
|
| !task_queue_manager_->IsQueueEmpty(COMPOSITOR_TASK_QUEUE);
|
| }
|
|
|
| void RendererSchedulerImpl::CurrentIdleTaskDeadlineCallback(
|
| base::TimeTicks* deadline_out) const {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| *deadline_out = estimated_next_frame_begin_;
|
| }
|
|
|
| RendererSchedulerImpl::Policy RendererSchedulerImpl::SchedulerPolicy() const {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| return current_policy_;
|
| }
|
|
|
| void RendererSchedulerImpl::MaybeUpdatePolicy() {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| if (policy_may_need_update_.IsSet()) {
|
| UpdatePolicy();
|
| }
|
| @@ -184,7 +195,7 @@ void RendererSchedulerImpl::PostUpdatePolicyOnControlRunner(
|
| }
|
|
|
| void RendererSchedulerImpl::UpdatePolicy() {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| if (!task_queue_manager_)
|
| return;
|
|
|
| @@ -241,7 +252,7 @@ void RendererSchedulerImpl::UpdatePolicy() {
|
| void RendererSchedulerImpl::StartIdlePeriod() {
|
| TRACE_EVENT_ASYNC_BEGIN0("renderer.scheduler",
|
| "RendererSchedulerIdlePeriod", this);
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| renderer_task_queue_selector_->EnableQueue(
|
| IDLE_TASK_QUEUE, RendererTaskQueueSelector::BEST_EFFORT_PRIORITY);
|
| task_queue_manager_->PumpQueue(IDLE_TASK_QUEUE);
|
| @@ -250,7 +261,7 @@ void RendererSchedulerImpl::StartIdlePeriod() {
|
| void RendererSchedulerImpl::EndIdlePeriod() {
|
| TRACE_EVENT_ASYNC_END0("renderer.scheduler",
|
| "RendererSchedulerIdlePeriod", this);
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| end_idle_period_closure_.Cancel();
|
| renderer_task_queue_selector_->DisableQueue(IDLE_TASK_QUEUE);
|
| }
|
| @@ -311,7 +322,7 @@ const char* RendererSchedulerImpl::PolicyToString(Policy policy) {
|
|
|
| scoped_refptr<base::debug::ConvertableToTraceFormat>
|
| RendererSchedulerImpl::AsValueLocked(base::TimeTicks optional_now) const {
|
| - main_thread_checker_.CalledOnValidThread();
|
| + DCHECK(main_thread_checker_.CalledOnValidThread());
|
| incoming_signals_lock_.AssertAcquired();
|
|
|
| if (optional_now.is_null())
|
|
|