namespace cc {
BeginFrameArgs::BeginFrameArgs()
- : frame_time(base::TimeTicks()),
- deadline(base::TimeTicks()),
- interval(base::TimeDelta::FromMicroseconds(-1)) {
+ : frame_time(base::TimeTicks()),
+ deadline(base::TimeTicks()),
+ interval(base::TimeDelta::FromMicroseconds(-1)),
+ type(BeginFrameArgs::INVALID) {
}
BeginFrameArgs::BeginFrameArgs(base::TimeTicks frame_time,
base::TimeTicks deadline,
- base::TimeDelta interval)
- : frame_time(frame_time),
- deadline(deadline),
- interval(interval)
-{}
+ base::TimeDelta interval,
+ BeginFrameArgs::BeginFrameArgsType type)
+ : frame_time(frame_time),
+ deadline(deadline),
+ interval(interval),
+ type(type) {
+}
+
+BeginFrameArgs BeginFrameArgs::CreateTyped(
+ base::TimeTicks frame_time,
+ base::TimeTicks deadline,
+ base::TimeDelta interval,
+ BeginFrameArgs::BeginFrameArgsType type) {
+ DCHECK_NE(type, BeginFrameArgs::INVALID);
+ return BeginFrameArgs(frame_time, deadline, interval, type);
+}
BeginFrameArgs BeginFrameArgs::Create(base::TimeTicks frame_time,
base::TimeTicks deadline,
base::TimeDelta interval) {
- return BeginFrameArgs(frame_time, deadline, interval);
+ return CreateTyped(frame_time, deadline, interval, BeginFrameArgs::NORMAL);
}
scoped_refptr<base::debug::ConvertableToTraceFormat> BeginFrameArgs::AsValue()
void BeginFrameArgs::AsValueInto(base::debug::TracedValue* state) const {
state->SetString("type", "BeginFrameArgs");
+ switch (type) {
+ case BeginFrameArgs::INVALID:
+ state->SetString("subtype", "INVALID");
+ break;
+ case BeginFrameArgs::NORMAL:
+ state->SetString("subtype", "NORMAL");
+ break;
+ case BeginFrameArgs::SYNCHRONOUS:
+ state->SetString("subtype", "SYNCHRONOUS");
+ break;
+ case BeginFrameArgs::MISSED:
+ state->SetString("subtype", "MISSED");
+ break;
+ }
state->SetDouble("frame_time_us", frame_time.ToInternalValue());
state->SetDouble("deadline_us", deadline.ToInternalValue());
state->SetDouble("interval_us", interval.InMicroseconds());
// so we set the deadline to 0 and guess that the interval is 16 milliseconds.
if (now.is_null())
now = gfx::FrameTime::Now();
- return BeginFrameArgs(now, base::TimeTicks(), DefaultInterval());
+ return CreateTyped(
+ now, base::TimeTicks(), DefaultInterval(), BeginFrameArgs::SYNCHRONOUS);
}
// This is a hard-coded deadline adjustment that assumes 60Hz, to be used in