OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ | 5 #ifndef COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ |
6 #define COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ | 6 #define COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ |
7 | 7 |
8 #include "base/atomicops.h" | 8 #include "base/atomicops.h" |
9 #include "base/synchronization/lock.h" | 9 #include "base/synchronization/lock.h" |
10 #include "components/scheduler/base/pollable_thread_safe_flag.h" | 10 #include "components/scheduler/base/pollable_thread_safe_flag.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 | 26 |
27 namespace scheduler { | 27 namespace scheduler { |
28 class RenderWidgetSchedulingState; | 28 class RenderWidgetSchedulingState; |
29 | 29 |
30 class SCHEDULER_EXPORT RendererSchedulerImpl | 30 class SCHEDULER_EXPORT RendererSchedulerImpl |
31 : public RendererScheduler, | 31 : public RendererScheduler, |
32 public IdleHelper::Delegate, | 32 public IdleHelper::Delegate, |
33 public SchedulerHelper::Observer, | 33 public SchedulerHelper::Observer, |
34 public RenderWidgetSignals::Observer { | 34 public RenderWidgetSignals::Observer { |
35 public: | 35 public: |
36 RendererSchedulerImpl( | 36 RendererSchedulerImpl(scoped_refptr<SchedulerTqmDelegate> main_task_runner); |
37 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner); | |
38 ~RendererSchedulerImpl() override; | 37 ~RendererSchedulerImpl() override; |
39 | 38 |
40 // RendererScheduler implementation: | 39 // RendererScheduler implementation: |
41 scoped_refptr<TaskQueue> DefaultTaskRunner() override; | 40 scoped_refptr<TaskQueue> DefaultTaskRunner() override; |
42 scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override; | 41 scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override; |
43 scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override; | 42 scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override; |
44 scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() override; | 43 scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() override; |
45 scoped_refptr<TaskQueue> TimerTaskRunner() override; | 44 scoped_refptr<TaskQueue> TimerTaskRunner() override; |
46 scoped_refptr<TaskQueue> NewLoadingTaskRunner(const char* name) override; | 45 scoped_refptr<TaskQueue> NewLoadingTaskRunner(const char* name) override; |
47 scoped_refptr<TaskQueue> NewTimerTaskRunner(const char* name) override; | 46 scoped_refptr<TaskQueue> NewTimerTaskRunner(const char* name) override; |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 | 237 |
239 base::Closure update_policy_closure_; | 238 base::Closure update_policy_closure_; |
240 DeadlineTaskRunner delayed_update_policy_runner_; | 239 DeadlineTaskRunner delayed_update_policy_runner_; |
241 CancelableClosureHolder end_renderer_hidden_idle_period_closure_; | 240 CancelableClosureHolder end_renderer_hidden_idle_period_closure_; |
242 CancelableClosureHolder suspend_timers_when_backgrounded_closure_; | 241 CancelableClosureHolder suspend_timers_when_backgrounded_closure_; |
243 | 242 |
244 // We have decided to improve thread safety at the cost of some boilerplate | 243 // We have decided to improve thread safety at the cost of some boilerplate |
245 // (the accessors) for the following data members. | 244 // (the accessors) for the following data members. |
246 | 245 |
247 struct MainThreadOnly { | 246 struct MainThreadOnly { |
248 explicit MainThreadOnly( | 247 MainThreadOnly(const scoped_refptr<TaskQueue>& compositor_task_runner, |
249 const scoped_refptr<TaskQueue>& compositor_task_runner); | 248 base::TickClock* time_source); |
250 ~MainThreadOnly(); | 249 ~MainThreadOnly(); |
251 | 250 |
252 TaskCostEstimator loading_task_cost_estimator; | 251 TaskCostEstimator loading_task_cost_estimator; |
253 TaskCostEstimator timer_task_cost_estimator; | 252 TaskCostEstimator timer_task_cost_estimator; |
254 IdleTimeEstimator idle_time_estimator; | 253 IdleTimeEstimator idle_time_estimator; |
255 UseCase current_use_case; | 254 UseCase current_use_case; |
256 Policy current_policy; | 255 Policy current_policy; |
257 base::TimeTicks current_policy_expiration_time; | 256 base::TimeTicks current_policy_expiration_time; |
258 base::TimeTicks estimated_next_frame_begin; | 257 base::TimeTicks estimated_next_frame_begin; |
259 base::TimeDelta compositor_frame_interval; | 258 base::TimeDelta compositor_frame_interval; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 | 332 |
334 PollableThreadSafeFlag policy_may_need_update_; | 333 PollableThreadSafeFlag policy_may_need_update_; |
335 base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; | 334 base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; |
336 | 335 |
337 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); | 336 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); |
338 }; | 337 }; |
339 | 338 |
340 } // namespace scheduler | 339 } // namespace scheduler |
341 | 340 |
342 #endif // COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ | 341 #endif // COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ |
OLD | NEW |