Index: cc/scheduler/scheduler.cc |
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc |
index 9b9ac87ecf3ca5dfdb9c56d5f5583d48b80055e6..d1997ea65eaf278be1276ab2852f80bb2d43ac22 100644 |
--- a/cc/scheduler/scheduler.cc |
+++ b/cc/scheduler/scheduler.cc |
@@ -18,9 +18,6 @@ Scheduler::Scheduler(SchedulerClient* client, |
weak_factory_(this), |
last_set_needs_begin_frame_(false), |
has_pending_begin_frame_(false), |
- last_begin_frame_time_(base::TimeTicks()), |
- // TODO(brianderson): Pass with BeginFrame in the near future. |
- interval_(base::TimeDelta::FromMicroseconds(16666)), |
state_machine_(scheduler_settings), |
inside_process_scheduled_actions_(false) { |
DCHECK(client_); |
@@ -111,16 +108,21 @@ void Scheduler::DidCreateAndInitializeOutputSurface() { |
base::TimeTicks Scheduler::AnticipatedDrawTime() { |
TRACE_EVENT0("cc", "Scheduler::AnticipatedDrawTime"); |
- if (!last_set_needs_begin_frame_) |
+ |
+ if (!last_set_needs_begin_frame_ || |
+ last_begin_frame_args_.interval <= base::TimeDelta()) |
return base::TimeTicks(); |
+ // TODO(brianderson): Express this in terms of the deadline. |
base::TimeTicks now = base::TimeTicks::Now(); |
- int64 intervals = ((now - last_begin_frame_time_) / interval_) + 1; |
- return last_begin_frame_time_ + (interval_ * intervals); |
+ int64 intervals = 1 + ((now - last_begin_frame_args_.frame_time) / |
+ last_begin_frame_args_.interval); |
+ return last_begin_frame_args_.frame_time + |
+ (last_begin_frame_args_.interval * intervals); |
} |
base::TimeTicks Scheduler::LastBeginFrameOnImplThreadTime() { |
- return last_begin_frame_time_; |
+ return last_begin_frame_args_.frame_time; |
} |
void Scheduler::SetupNextBeginFrameIfNeeded() { |
@@ -162,14 +164,13 @@ void Scheduler::SetupNextBeginFrameIfNeeded() { |
} |
} |
-void Scheduler::BeginFrame(base::TimeTicks frame_time) { |
+void Scheduler::BeginFrame(const BeginFrameArgs& args) { |
TRACE_EVENT0("cc", "Scheduler::BeginFrame"); |
DCHECK(!has_pending_begin_frame_); |
has_pending_begin_frame_ = true; |
- last_begin_frame_time_ = frame_time; |
safe_to_expect_begin_frame_ = true; |
- state_machine_.DidEnterBeginFrame(); |
- state_machine_.SetFrameTime(frame_time); |
+ last_begin_frame_args_ = args; |
+ state_machine_.DidEnterBeginFrame(args); |
ProcessScheduledActions(); |
state_machine_.DidLeaveBeginFrame(); |
} |