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

Side by Side Diff: content/renderer/scheduler/renderer_scheduler_impl.h

Issue 985813002: Experimental: Remove chromium shared timers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More tests Created 5 years, 9 months 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 unified diff | Download patch
OLDNEW
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 CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_IMPL_H_ 5 #ifndef CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_IMPL_H_
6 #define CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_IMPL_H_ 6 #define CONTENT_RENDERER_SCHEDULER_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 "base/threading/thread_checker.h" 10 #include "base/threading/thread_checker.h"
(...skipping 17 matching lines...) Expand all
28 public: 28 public:
29 RendererSchedulerImpl( 29 RendererSchedulerImpl(
30 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner); 30 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner);
31 ~RendererSchedulerImpl() override; 31 ~RendererSchedulerImpl() override;
32 32
33 // RendererScheduler implementation: 33 // RendererScheduler implementation:
34 scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override; 34 scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override;
35 scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override; 35 scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override;
36 scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override; 36 scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override;
37 scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() override; 37 scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() override;
38 scoped_refptr<base::SingleThreadTaskRunner> TimerTaskRunner() override;
38 void WillBeginFrame(const cc::BeginFrameArgs& args) override; 39 void WillBeginFrame(const cc::BeginFrameArgs& args) override;
39 void BeginFrameNotExpectedSoon() override; 40 void BeginFrameNotExpectedSoon() override;
40 void DidCommitFrameToCompositor() override; 41 void DidCommitFrameToCompositor() override;
41 void DidReceiveInputEventOnCompositorThread( 42 void DidReceiveInputEventOnCompositorThread(
42 const blink::WebInputEvent& web_input_event) override; 43 const blink::WebInputEvent& web_input_event) override;
43 void DidAnimateForInputOnCompositorThread() override; 44 void DidAnimateForInputOnCompositorThread() override;
44 bool IsHighPriorityWorkAnticipated() override; 45 bool IsHighPriorityWorkAnticipated() override;
45 bool ShouldYieldForHighPriorityWork() override; 46 bool ShouldYieldForHighPriorityWork() override;
46 void AddTaskObserver(base::MessageLoop::TaskObserver* task_observer) override; 47 void AddTaskObserver(base::MessageLoop::TaskObserver* task_observer) override;
47 void RemoveTaskObserver( 48 void RemoveTaskObserver(
48 base::MessageLoop::TaskObserver* task_observer) override; 49 base::MessageLoop::TaskObserver* task_observer) override;
49 void Shutdown() override; 50 void Shutdown() override;
51 void SuspendTimerQueue() override;
52 void ResumeTimerQueue() override;
50 53
51 void SetTimeSourceForTesting(scoped_refptr<cc::TestNowSource> time_source); 54 void SetTimeSourceForTesting(scoped_refptr<cc::TestNowSource> time_source);
52 void SetWorkBatchSizeForTesting(size_t work_batch_size); 55 void SetWorkBatchSizeForTesting(size_t work_batch_size);
53 56
54 private: 57 private:
55 friend class RendererSchedulerImplTest; 58 friend class RendererSchedulerImplTest;
56 59
57 // Keep RendererSchedulerImpl::TaskQueueIdToString in sync with this enum. 60 // Keep RendererSchedulerImpl::TaskQueueIdToString in sync with this enum.
58 enum QueueId { 61 enum QueueId {
59 DEFAULT_TASK_QUEUE, 62 DEFAULT_TASK_QUEUE,
60 COMPOSITOR_TASK_QUEUE, 63 COMPOSITOR_TASK_QUEUE,
61 LOADING_TASK_QUEUE, 64 LOADING_TASK_QUEUE,
65 TIMER_TASK_QUEUE,
62 IDLE_TASK_QUEUE, 66 IDLE_TASK_QUEUE,
63 CONTROL_TASK_QUEUE, 67 CONTROL_TASK_QUEUE,
64 CONTROL_TASK_AFTER_WAKEUP_QUEUE, 68 CONTROL_TASK_AFTER_WAKEUP_QUEUE,
65 // Must be the last entry. 69 // Must be the last entry.
66 TASK_QUEUE_COUNT, 70 TASK_QUEUE_COUNT,
67 }; 71 };
68 72
69 enum class Policy { 73 enum class Policy {
70 NORMAL, 74 NORMAL,
71 COMPOSITOR_PRIORITY, 75 COMPOSITOR_PRIORITY,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 142
139 // Called when a previously queued input event was processed. 143 // Called when a previously queued input event was processed.
140 // |begin_frame_time|, if non-zero, identifies the frame time at which the 144 // |begin_frame_time|, if non-zero, identifies the frame time at which the
141 // input was processed. 145 // input was processed.
142 void DidProcessInputEvent(base::TimeTicks begin_frame_time); 146 void DidProcessInputEvent(base::TimeTicks begin_frame_time);
143 147
144 // Start and end an idle period. 148 // Start and end an idle period.
145 void StartIdlePeriod(); 149 void StartIdlePeriod();
146 void EndIdlePeriod(); 150 void EndIdlePeriod();
147 151
152 // Enables the timer queue if timer_queue_suspended_ is zero.
153 void MaybeEnableTimerQueue();
154
148 base::TimeTicks Now() const; 155 base::TimeTicks Now() const;
149 156
150 base::ThreadChecker main_thread_checker_; 157 base::ThreadChecker main_thread_checker_;
151 scoped_ptr<RendererTaskQueueSelector> renderer_task_queue_selector_; 158 scoped_ptr<RendererTaskQueueSelector> renderer_task_queue_selector_;
152 scoped_ptr<TaskQueueManager> task_queue_manager_; 159 scoped_ptr<TaskQueueManager> task_queue_manager_;
153 scoped_refptr<base::SingleThreadTaskRunner> control_task_runner_; 160 scoped_refptr<base::SingleThreadTaskRunner> control_task_runner_;
154 scoped_refptr<base::SingleThreadTaskRunner> control_task_after_wakeup_runner_; 161 scoped_refptr<base::SingleThreadTaskRunner> control_task_after_wakeup_runner_;
155 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; 162 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_;
156 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; 163 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
157 scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner_; 164 scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner_;
165 scoped_refptr<base::SingleThreadTaskRunner> timer_task_runner_;
158 scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_; 166 scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_;
159 167
160 base::Closure update_policy_closure_; 168 base::Closure update_policy_closure_;
161 CancelableClosureHolder end_idle_period_closure_; 169 CancelableClosureHolder end_idle_period_closure_;
162 170
163 // Don't access current_policy_ directly, instead use SchedulerPolicy(). 171 // Don't access current_policy_ directly, instead use SchedulerPolicy().
164 Policy current_policy_; 172 Policy current_policy_;
165 173
166 base::TimeTicks estimated_next_frame_begin_; 174 base::TimeTicks estimated_next_frame_begin_;
167 175
168 // The incoming_signals_lock_ mutex protects access to all variables in the 176 // The incoming_signals_lock_ mutex protects access to all variables in the
169 // (contiguous) block below. 177 // (contiguous) block below.
170 base::Lock incoming_signals_lock_; 178 base::Lock incoming_signals_lock_;
171 base::TimeTicks last_input_receipt_time_on_compositor_; 179 base::TimeTicks last_input_receipt_time_on_compositor_;
172 base::TimeTicks last_input_process_time_on_main_; 180 base::TimeTicks last_input_process_time_on_main_;
173 blink::WebInputEvent::Type last_input_type_; 181 blink::WebInputEvent::Type last_input_type_;
174 InputStreamState input_stream_state_; 182 InputStreamState input_stream_state_;
175 PollableNeedsUpdateFlag policy_may_need_update_; 183 PollableNeedsUpdateFlag policy_may_need_update_;
184 int timer_queue_suspended_; // counter
176 185
177 scoped_refptr<cc::TestNowSource> time_source_; 186 scoped_refptr<cc::TestNowSource> time_source_;
178 187
179 base::WeakPtr<RendererSchedulerImpl> weak_renderer_scheduler_ptr_; 188 base::WeakPtr<RendererSchedulerImpl> weak_renderer_scheduler_ptr_;
180 base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; 189 base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_;
181 190
182 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); 191 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl);
183 }; 192 };
184 193
185 } // namespace content 194 } // namespace content
186 195
187 #endif // CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_IMPL_H_ 196 #endif // CONTENT_RENDERER_SCHEDULER_RENDERER_SCHEDULER_IMPL_H_
OLDNEW
« no previous file with comments | « content/renderer/scheduler/renderer_scheduler.h ('k') | content/renderer/scheduler/renderer_scheduler_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698