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

Unified Diff: cc/scheduler/scheduler.cc

Issue 775143003: cc: Implement unified BeginFrame on aura (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 0cce5dc9adc6ea8dd58bd70da3ee6b12645ba1f1..99bd280e1ba0b27edea35adc8f9e860f7b906645 100644
--- a/cc/scheduler/scheduler.cc
+++ b/cc/scheduler/scheduler.cc
@@ -85,6 +85,7 @@ Scheduler::Scheduler(
primary_frame_source_internal_(external_begin_frame_source.Pass()),
background_frame_source_internal_(),
vsync_observer_(NULL),
+ authoritative_vsync_interval_(base::TimeDelta()),
settings_(scheduler_settings),
client_(client),
layer_tree_host_id_(layer_tree_host_id),
@@ -166,12 +167,18 @@ void Scheduler::OnPowerStateChange(bool on_battery_power) {
void Scheduler::CommitVSyncParameters(base::TimeTicks timebase,
base::TimeDelta interval) {
- // TODO(brianderson): We should not be receiving 0 intervals.
- if (interval == base::TimeDelta())
- interval = BeginFrameArgs::DefaultInterval();
+ base::TimeDelta vsync_interval;
+ if (authoritative_vsync_interval_ != base::TimeDelta()) {
+ vsync_interval = authoritative_vsync_interval_;
+ } else if (interval == base::TimeDelta()) {
+ // TODO(brianderson): We should not be receiving 0 intervals.
+ vsync_interval = BeginFrameArgs::DefaultInterval();
+ } else {
+ vsync_interval = interval;
+ }
if (vsync_observer_)
- vsync_observer_->OnUpdateVSyncParameters(timebase, interval);
+ vsync_observer_->OnUpdateVSyncParameters(timebase, vsync_interval);
}
void Scheduler::SetEstimatedParentDrawTime(base::TimeDelta draw_time) {
@@ -449,6 +456,10 @@ void Scheduler::SetChildrenNeedBeginFrames(bool children_need_begin_frames) {
DCHECK_EQ(state_machine_.NextAction(), SchedulerStateMachine::ACTION_NONE);
}
+void Scheduler::SetAuthoritativeVSyncInterval(base::TimeDelta interval) {
+ authoritative_vsync_interval_ = interval;
+}
+
// BeginRetroFrame is called for BeginFrames that we've deferred because
// the scheduler was in the middle of processing a previous BeginFrame.
void Scheduler::BeginRetroFrame() {

Powered by Google App Engine
This is Rietveld 408576698