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

Unified Diff: cc/scheduler/scheduler.cc

Issue 791373003: Add Set Authoritative VSync Interval function (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 143c3ff54489573b1e22bf3a2a35ee17fecb1d95..95e91b9c198b888e104f327f878002c9c747a566 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,9 +167,12 @@ 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())
+ if (authoritative_vsync_interval_ != base::TimeDelta()) {
+ interval = authoritative_vsync_interval_;
+ } else if (interval == base::TimeDelta()) {
+ // TODO(brianderson): We should not be receiving 0 intervals.
interval = BeginFrameArgs::DefaultInterval();
+ }
if (vsync_observer_)
vsync_observer_->OnUpdateVSyncParameters(timebase, interval);
@@ -449,6 +453,10 @@ void Scheduler::SetChildrenNeedBeginFrames(bool children_need_begin_frames) {
DCHECK_EQ(state_machine_.NextAction(), SchedulerStateMachine::ACTION_NONE);
}
+void Scheduler::SetAuthoritativeVSyncInterval(base::TimeDelta interval) {
simonhong 2014/12/11 23:09:46 nit: How about add DCHECK(settings_.forward_begin_
+ 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() {
« no previous file with comments | « cc/scheduler/scheduler.h ('k') | cc/test/fake_proxy.h » ('j') | cc/trees/thread_proxy.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698