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

Unified Diff: cc/scheduler/begin_frame_source.cc

Issue 1200113003: cc: Cleanup DelayBasedTimeSource code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@task_runner_refptr
Patch Set: Fix race between missed tick and normal tick Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: cc/scheduler/begin_frame_source.cc
diff --git a/cc/scheduler/begin_frame_source.cc b/cc/scheduler/begin_frame_source.cc
index bc828026303bce098331606e8c675a73bf5ff110..e7f6425f4d24f5f8585cfc09eaf5441624127253 100644
--- a/cc/scheduler/begin_frame_source.cc
+++ b/cc/scheduler/begin_frame_source.cc
@@ -210,12 +210,17 @@ scoped_ptr<SyntheticBeginFrameSource> SyntheticBeginFrameSource::Create(
base::TimeDelta initial_vsync_interval) {
scoped_ptr<DelayBasedTimeSource> time_source =
DelayBasedTimeSource::Create(initial_vsync_interval, task_runner);
- return make_scoped_ptr(new SyntheticBeginFrameSource(time_source.Pass()));
+ return make_scoped_ptr(
+ new SyntheticBeginFrameSource(task_runner, time_source.Pass()));
}
SyntheticBeginFrameSource::SyntheticBeginFrameSource(
+ base::SingleThreadTaskRunner* task_runner,
scoped_ptr<DelayBasedTimeSource> time_source)
- : BeginFrameSourceBase(), time_source_(time_source.Pass()) {
+ : BeginFrameSourceBase(),
+ task_runner_(task_runner),
+ time_source_(time_source.Pass()),
+ weak_factory_(this) {
time_source_->SetActive(false);
time_source_->SetClient(this);
}
@@ -239,7 +244,12 @@ BeginFrameArgs SyntheticBeginFrameSource::CreateBeginFrameArgs(
time_source_->Interval(), type);
}
-// TimeSourceClient support
+// DelayBasedTimeSourceClient support
+void SyntheticBeginFrameSource::OnMissedTick() {
mithro-old 2015/06/30 08:11:52 I feel like these callbacks should just take a tim
+ CallOnBeginFrame(CreateBeginFrameArgs(time_source_->MissedTickTime(),
+ BeginFrameArgs::MISSED));
+}
+
void SyntheticBeginFrameSource::OnTimerTick() {
CallOnBeginFrame(CreateBeginFrameArgs(time_source_->LastTickTime(),
BeginFrameArgs::NORMAL));
@@ -248,12 +258,7 @@ void SyntheticBeginFrameSource::OnTimerTick() {
// BeginFrameSourceBase support
void SyntheticBeginFrameSource::OnNeedsBeginFramesChange(
bool needs_begin_frames) {
- base::TimeTicks missed_tick_time =
- time_source_->SetActive(needs_begin_frames);
- if (!missed_tick_time.is_null()) {
- CallOnBeginFrame(
- CreateBeginFrameArgs(missed_tick_time, BeginFrameArgs::MISSED));
- }
+ time_source_->SetActive(needs_begin_frames);
}
// Tracing support

Powered by Google App Engine
This is Rietveld 408576698