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 |