diff --git a/engine/src/flutter/fml/trace_event.cc b/engine/src/flutter/fml/trace_event.cc index c99b74bb18..628b3b785e 100644 --- a/engine/src/flutter/fml/trace_event.cc +++ b/engine/src/flutter/fml/trace_event.cc @@ -9,6 +9,20 @@ namespace fml { namespace tracing { +void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count) { + auto count_string = std::to_string(count); + const char* arg_names[] = {name}; + const char* arg_values[] = {count_string.c_str()}; + Dart_TimelineEvent(name, // label + Dart_TimelineGetMicros(), // timestamp0 + 0, // timestamp1_or_async_id + Dart_Timeline_Event_Counter, // event type + 1, // argument_count + arg_names, // argument_names + arg_values // argument_values + ); +} + void TraceEvent0(TraceArg category_group, TraceArg name) { Dart_TimelineEvent(name, // label Dart_TimelineGetMicros(), // timestamp0 diff --git a/engine/src/flutter/fml/trace_event.h b/engine/src/flutter/fml/trace_event.h index 4ef66c3673..9dd094acaa 100644 --- a/engine/src/flutter/fml/trace_event.h +++ b/engine/src/flutter/fml/trace_event.h @@ -13,6 +13,8 @@ #include +#define FML_TRACE_COUNTER(category_group, name, count) \ + TRACE_COUNTER(category_group, name, 0u, name, count) #define TRACE_EVENT0(a, b) TRACE_DURATION(a, b) #define TRACE_EVENT1(a, b, c, d) TRACE_DURATION(a, b, c, d) #define TRACE_EVENT2(a, b, c, d, e, f) TRACE_DURATION(a, b, c, d, e, f) @@ -39,6 +41,13 @@ ::fml::tracing::ScopedInstantEnd __FML__TOKEN_CAT__2(__trace_end_, \ __LINE__)(name); +// This macro has the FML_ prefix so that it does not collide with the macros +// from trace/event.h on Fuchsia. +// +// TODO(chinmaygarde): All macros here should have the FML prefix. +#define FML_TRACE_COUNTER(category_group, name, count) \ + ::fml::tracing::TraceCounter(category_group, name, count); + #define TRACE_EVENT0(category_group, name) \ ::fml::tracing::TraceEvent0(category_group, name); \ __FML__AUTO_TRACE_END(name) @@ -90,6 +99,8 @@ namespace tracing { using TraceArg = const char*; using TraceIDArg = int64_t; +void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count); + void TraceEvent0(TraceArg category_group, TraceArg name); void TraceEvent1(TraceArg category_group,