| Index: cc/scheduler/scheduler.cc
|
| diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
|
| index 7110bff7c3ae3c2ea435580d3a1f9bd3fc2b402e..8f6b2dc451a8d71edd5c4ee95c985ccf437d4430 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_);
|
| @@ -110,13 +107,21 @@ void Scheduler::DidCreateAndInitializeOutputSurface() {
|
|
|
| base::TimeTicks Scheduler::AnticipatedDrawTime() {
|
| TRACE_EVENT0("cc", "Scheduler::AnticipatedDrawTime");
|
| +
|
| + // 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);
|
| +
|
| + if (last_begin_frame_args_.interval() <= base::TimeDelta())
|
| + return now;
|
| +
|
| + 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() {
|
| @@ -141,13 +146,12 @@ void Scheduler::SetupNextBeginFrameIfNeeded() {
|
| }
|
| }
|
|
|
| -void Scheduler::BeginFrame(base::TimeTicks frame_time) {
|
| +void Scheduler::BeginFrame(BeginFrameArgs args) {
|
| TRACE_EVENT0("cc", "Scheduler::BeginFrame");
|
| DCHECK(!has_pending_begin_frame_);
|
| has_pending_begin_frame_ = true;
|
| - last_begin_frame_time_ = frame_time;
|
| - state_machine_.DidEnterBeginFrame();
|
| - state_machine_.SetFrameTime(frame_time);
|
| + last_begin_frame_args_ = args;
|
| + state_machine_.DidEnterBeginFrame(args);
|
| ProcessScheduledActions();
|
| state_machine_.DidLeaveBeginFrame();
|
| }
|
|
|