// 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()); } BeginFrameArgs BeginFrameArgs::CreateExpiredForTesting() { base::TimeTicks now = base::TimeTicks::Now(); return BeginFrameArgs(now, now - DefaultInterval(), 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); } base::TimeDelta BeginFrameArgs::DefaultRetroactiveBeginFramePeriod() { return base::TimeDelta::FromMicroseconds(4444); } } // namespace cc