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

Unified Diff: cc/scheduler/scheduler.cc

Issue 16863005: cc: Add BeginFrameArgs (Closed) Base URL: http://git.chromium.org/chromium/src.git@nofrc12
Patch Set: Created 7 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/scheduler.cc
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
index 7110bff7c3ae3c2ea435580d3a1f9bd3fc2b402e..2f43e8fd5ad22ca334de4f30a7d84e55b670cdfe 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,13 @@ void Scheduler::SetupNextBeginFrameIfNeeded() {
}
}
-void Scheduler::BeginFrame(base::TimeTicks frame_time) {
+void Scheduler::BeginFrame(BeginFrameArgs args) {
TRACE_EVENT0("cc", "Scheduler::BeginFrame");
+ last_begin_frame_args_ = args;
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;
Sami 2013/06/13 10:01:07 Dupe assignment?
brianderson 2013/06/14 20:12:02 Will fix.
+ state_machine_.DidEnterBeginFrame(args);
ProcessScheduledActions();
state_machine_.DidLeaveBeginFrame();
}

Powered by Google App Engine
This is Rietveld 408576698