Chromium Code Reviews| Index: cc/output/begin_frame_args.cc |
| diff --git a/cc/output/begin_frame_args.cc b/cc/output/begin_frame_args.cc |
| index fc7098f4798cb1aefbf763f583da487f0fb5572f..3adc061fdb007b1e73aa1bf512b7638d3510609a 100644 |
| --- a/cc/output/begin_frame_args.cc |
| +++ b/cc/output/begin_frame_args.cc |
| @@ -9,6 +9,21 @@ |
| namespace cc { |
| +const char* BeginFrameArgs::TypeToString(BeginFrameArgsType type) { |
| + switch (type) { |
|
picksi1
2014/11/20 14:04:20
should this be a const function?
mithro-old
2014/11/21 03:17:04
Static functions can't be const.
|
| + case BeginFrameArgs::INVALID: |
| + return "INVALID"; |
| + case BeginFrameArgs::NORMAL: |
| + return "NORMAL"; |
| + case BeginFrameArgs::SYNCHRONOUS: |
| + return "SYNCHRONOUS"; |
| + case BeginFrameArgs::MISSED: |
| + return "MISSED"; |
| + } |
| + NOTREACHED(); |
| + return "???"; |
|
picksi1
2014/11/20 14:04:20
If this return value is Logged somewhere (in the t
danakj
2014/11/20 16:03:02
The NOTREACHED implies we never get to this line.
mithro-old
2014/11/21 03:17:03
This follows the approach in cc/scheduler/schedule
mithro-old
2014/11/21 03:17:04
NOTREACHED() doesn't fail where DCHECK is not enab
|
| +} |
| + |
| BeginFrameArgs::BeginFrameArgs() |
| : frame_time(base::TimeTicks()), |
| deadline(base::TimeTicks()), |
| @@ -26,19 +41,19 @@ BeginFrameArgs::BeginFrameArgs(base::TimeTicks frame_time, |
| type(type) { |
| } |
| -BeginFrameArgs BeginFrameArgs::CreateTyped( |
| - base::TimeTicks frame_time, |
| - base::TimeTicks deadline, |
| - base::TimeDelta interval, |
| - BeginFrameArgs::BeginFrameArgsType type) { |
| +BeginFrameArgs BeginFrameArgs::Create(BeginFrameArgs::CreationLocation location, |
| + base::TimeTicks frame_time, |
| + base::TimeTicks deadline, |
| + base::TimeDelta interval, |
| + BeginFrameArgs::BeginFrameArgsType type) { |
| DCHECK_NE(type, BeginFrameArgs::INVALID); |
| +#ifdef NDEBUG |
| return BeginFrameArgs(frame_time, deadline, interval, type); |
| -} |
| - |
| -BeginFrameArgs BeginFrameArgs::Create(base::TimeTicks frame_time, |
| - base::TimeTicks deadline, |
| - base::TimeDelta interval) { |
| - return CreateTyped(frame_time, deadline, interval, BeginFrameArgs::NORMAL); |
| +#else |
| + BeginFrameArgs args = BeginFrameArgs(frame_time, deadline, interval, type); |
| + args.created_by = *location; |
| + return args; |
| +#endif |
| } |
| scoped_refptr<base::debug::ConvertableToTraceFormat> BeginFrameArgs::AsValue() |
| @@ -51,33 +66,15 @@ 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->SetString("subtype", TypeToString(type)); |
| state->SetDouble("frame_time_us", frame_time.ToInternalValue()); |
| state->SetDouble("deadline_us", deadline.ToInternalValue()); |
| state->SetDouble("interval_us", interval.InMicroseconds()); |
| -} |
| - |
| -BeginFrameArgs BeginFrameArgs::CreateForSynchronousCompositor( |
| - base::TimeTicks now) { |
| - // For WebView/SynchronousCompositor, we always want to draw immediately, |
| - // so we set the deadline to 0 and guess that the interval is 16 milliseconds. |
| - if (now.is_null()) |
| - now = gfx::FrameTime::Now(); |
| - return CreateTyped( |
| - now, base::TimeTicks(), DefaultInterval(), BeginFrameArgs::SYNCHRONOUS); |
| +#ifndef NDEBUG |
| + std::string created_by_str(""); |
| + created_by.Write(true, true, &created_by_str); |
| + state->SetString("created_by", created_by_str); |
| +#endif |
| } |
| // This is a hard-coded deadline adjustment that assumes 60Hz, to be used in |