Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1486)

Unified Diff: cc/output/begin_frame_args.cc

Issue 735723005: cc: Adding creation location to debug BeginFrameArgs objects. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Testing on try bots. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698