diff options
Diffstat (limited to 'cc/output/begin_frame_args.cc')
-rw-r--r-- | cc/output/begin_frame_args.cc | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/cc/output/begin_frame_args.cc b/cc/output/begin_frame_args.cc new file mode 100644 index 0000000..ea14954 --- /dev/null +++ b/cc/output/begin_frame_args.cc @@ -0,0 +1,55 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "cc/output/begin_frame_args.h" + +namespace cc { + +BeginFrameArgs::BeginFrameArgs() + : frame_time(base::TimeTicks()), + deadline(base::TimeTicks()), + interval(base::TimeDelta::FromMicroseconds(-1)) +{ +} + +BeginFrameArgs::BeginFrameArgs(base::TimeTicks frame_time, + base::TimeTicks deadline, + base::TimeDelta interval) + : frame_time(frame_time), + deadline(deadline), + interval(interval) +{} + +BeginFrameArgs BeginFrameArgs::Create(base::TimeTicks frame_time, + base::TimeTicks deadline, + base::TimeDelta interval) { + return BeginFrameArgs(frame_time, deadline, interval); +} + +BeginFrameArgs BeginFrameArgs::CreateForSynchronousCompositor() { + // For WebView/SynchronousCompositor, we always want to draw immediately, + // so we set the deadline to 0 and guess that the interval is 16 milliseconds. + return BeginFrameArgs(base::TimeTicks::Now(), + base::TimeTicks(), + DefaultInterval()); +} + +BeginFrameArgs BeginFrameArgs::CreateForTesting() { + base::TimeTicks now = base::TimeTicks::Now(); + return BeginFrameArgs(now, + now + (DefaultInterval() / 2), + DefaultInterval()); +} + +base::TimeDelta BeginFrameArgs::DefaultDeadlineAdjustment() { + // Using a large deadline adjustment will effectively revert BeginFrame + // scheduling to the hard vsync scheduling we used to have. + return base::TimeDelta::FromSeconds(-1); +} + +base::TimeDelta BeginFrameArgs::DefaultInterval() { + return base::TimeDelta::FromMicroseconds(16666); +} + +} // namespace cc |