Allow embedders to add events to the timeline. (#7917)
Fixes https://github.com/flutter/flutter/issues/28283
diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc
index 6444104..d3e05da 100644
--- a/shell/platform/embedder/embedder.cc
+++ b/shell/platform/embedder/embedder.cc
@@ -24,6 +24,7 @@
#include "flutter/fml/make_copyable.h"
#include "flutter/fml/message_loop.h"
#include "flutter/fml/paths.h"
+#include "flutter/fml/trace_event.h"
#include "flutter/shell/common/persistent_cache.h"
#include "flutter/shell/common/rasterizer.h"
#include "flutter/shell/common/switches.h"
@@ -808,3 +809,15 @@
}
return kSuccess;
}
+
+void FlutterEngineTraceEventDurationBegin(const char* name) {
+ fml::tracing::TraceEvent0("flutter", name);
+}
+
+void FlutterEngineTraceEventDurationEnd(const char* name) {
+ fml::tracing::TraceEventEnd(name);
+}
+
+void FlutterEngineTraceEventInstant(const char* name) {
+ fml::tracing::TraceEventInstant0("flutter", name);
+}
diff --git a/shell/platform/embedder/embedder.h b/shell/platform/embedder/embedder.h
index 0bcd163..0186ecb 100644
--- a/shell/platform/embedder/embedder.h
+++ b/shell/platform/embedder/embedder.h
@@ -596,6 +596,28 @@
const uint8_t* data,
size_t data_length);
+// A profiling utility. Logs a trace duration begin event to the timeline. If
+// the timeline is unavailable or disabled, this has no effect. Must be
+// balanced with an duration end event (via
+// |FlutterEngineTraceEventDurationEnd|) with the same name on the same thread.
+// Can be called on any thread.
+FLUTTER_EXPORT
+void FlutterEngineTraceEventDurationBegin(const char* name);
+
+// A profiling utility. Logs a trace duration end event to the timeline. If
+// the timeline is unavailable or disabled, this has no effect. This call must
+// be preceeded by a trace duration begin call (via
+// |FlutterEngineTraceEventDurationBegin|) with the same name on the same
+// thread. Can be called on any thread.
+FLUTTER_EXPORT
+void FlutterEngineTraceEventDurationEnd(const char* name);
+
+// A profiling utility. Logs a trace duration instant event to the timeline. If
+// the timeline is unavailable or disabled, this has no effect. Can be called
+// on any thread.
+FLUTTER_EXPORT
+void FlutterEngineTraceEventInstant(const char* name);
+
#if defined(__cplusplus)
} // extern "C"
#endif