@@ -18,8 +18,14 @@ namespace tracing {
1818#if FLUTTER_TIMELINE_ENABLED
1919
2020namespace {
21+
22+ int64_t DefaultMicrosSource () {
23+ return -1 ;
24+ }
25+
2126AsciiTrie gAllowlist ;
2227std::atomic<TimelineEventHandler> gTimelineEventHandler ;
28+ std::atomic<TimelineMicrosSource> gTimelineMicrosSource = DefaultMicrosSource;
2329
2430inline void FlutterTimelineEvent (const char * label,
2531 int64_t timestamp0,
@@ -45,6 +51,10 @@ void TraceSetTimelineEventHandler(TimelineEventHandler handler) {
4551 gTimelineEventHandler = handler;
4652}
4753
54+ void TraceSetTimelineMicrosSource (TimelineMicrosSource source) {
55+ gTimelineMicrosSource = source;
56+ }
57+
4858size_t TraceNonce () {
4959 static std::atomic_size_t gLastItem ;
5060 return ++gLastItem ;
@@ -83,19 +93,19 @@ void TraceTimelineEvent(TraceArg category_group,
8393 Dart_Timeline_Event_Type type,
8494 const std::vector<const char *>& c_names,
8595 const std::vector<std::string>& values) {
86- TraceTimelineEvent (category_group, // group
87- name, // name
88- Dart_TimelineGetMicros (), // timestamp_micros
89- identifier, // identifier
90- type, // type
91- c_names, // names
92- values // values
96+ TraceTimelineEvent (category_group, // group
97+ name, // name
98+ gTimelineMicrosSource . load () (), // timestamp_micros
99+ identifier, // identifier
100+ type, // type
101+ c_names, // names
102+ values // values
93103 );
94104}
95105
96106void TraceEvent0 (TraceArg category_group, TraceArg name) {
97- FlutterTimelineEvent (name, // label
98- Dart_TimelineGetMicros (), // timestamp0
107+ FlutterTimelineEvent (name, // label
108+ gTimelineMicrosSource . load ()(), // timestamp0
99109 0 , // timestamp1_or_async_id
100110 Dart_Timeline_Event_Begin, // event type
101111 0 , // argument_count
@@ -110,8 +120,8 @@ void TraceEvent1(TraceArg category_group,
110120 TraceArg arg1_val) {
111121 const char * arg_names[] = {arg1_name};
112122 const char * arg_values[] = {arg1_val};
113- FlutterTimelineEvent (name, // label
114- Dart_TimelineGetMicros (), // timestamp0
123+ FlutterTimelineEvent (name, // label
124+ gTimelineMicrosSource . load ()(), // timestamp0
115125 0 , // timestamp1_or_async_id
116126 Dart_Timeline_Event_Begin, // event type
117127 1 , // argument_count
@@ -128,8 +138,8 @@ void TraceEvent2(TraceArg category_group,
128138 TraceArg arg2_val) {
129139 const char * arg_names[] = {arg1_name, arg2_name};
130140 const char * arg_values[] = {arg1_val, arg2_val};
131- FlutterTimelineEvent (name, // label
132- Dart_TimelineGetMicros (), // timestamp0
141+ FlutterTimelineEvent (name, // label
142+ gTimelineMicrosSource . load ()(), // timestamp0
133143 0 , // timestamp1_or_async_id
134144 Dart_Timeline_Event_Begin, // event type
135145 2 , // argument_count
@@ -139,22 +149,22 @@ void TraceEvent2(TraceArg category_group,
139149}
140150
141151void TraceEventEnd (TraceArg name) {
142- FlutterTimelineEvent (name, // label
143- Dart_TimelineGetMicros (), // timestamp0
144- 0 , // timestamp1_or_async_id
145- Dart_Timeline_Event_End, // event type
146- 0 , // argument_count
147- nullptr , // argument_names
148- nullptr // argument_values
152+ FlutterTimelineEvent (name, // label
153+ gTimelineMicrosSource . load () (), // timestamp0
154+ 0 , // timestamp1_or_async_id
155+ Dart_Timeline_Event_End, // event type
156+ 0 , // argument_count
157+ nullptr , // argument_names
158+ nullptr // argument_values
149159 );
150160}
151161
152162void TraceEventAsyncBegin0 (TraceArg category_group,
153163 TraceArg name,
154164 TraceIDArg id) {
155- FlutterTimelineEvent (name, // label
156- Dart_TimelineGetMicros (), // timestamp0
157- id, // timestamp1_or_async_id
165+ FlutterTimelineEvent (name, // label
166+ gTimelineMicrosSource . load () (), // timestamp0
167+ id, // timestamp1_or_async_id
158168 Dart_Timeline_Event_Async_Begin, // event type
159169 0 , // argument_count
160170 nullptr , // argument_names
@@ -165,8 +175,8 @@ void TraceEventAsyncBegin0(TraceArg category_group,
165175void TraceEventAsyncEnd0 (TraceArg category_group,
166176 TraceArg name,
167177 TraceIDArg id) {
168- FlutterTimelineEvent (name, // label
169- Dart_TimelineGetMicros (), // timestamp0
178+ FlutterTimelineEvent (name, // label
179+ gTimelineMicrosSource . load ()(), // timestamp0
170180 id, // timestamp1_or_async_id
171181 Dart_Timeline_Event_Async_End, // event type
172182 0 , // argument_count
@@ -182,9 +192,9 @@ void TraceEventAsyncBegin1(TraceArg category_group,
182192 TraceArg arg1_val) {
183193 const char * arg_names[] = {arg1_name};
184194 const char * arg_values[] = {arg1_val};
185- FlutterTimelineEvent (name, // label
186- Dart_TimelineGetMicros (), // timestamp0
187- id, // timestamp1_or_async_id
195+ FlutterTimelineEvent (name, // label
196+ gTimelineMicrosSource . load () (), // timestamp0
197+ id, // timestamp1_or_async_id
188198 Dart_Timeline_Event_Async_Begin, // event type
189199 1 , // argument_count
190200 arg_names, // argument_names
@@ -199,8 +209,8 @@ void TraceEventAsyncEnd1(TraceArg category_group,
199209 TraceArg arg1_val) {
200210 const char * arg_names[] = {arg1_name};
201211 const char * arg_values[] = {arg1_val};
202- FlutterTimelineEvent (name, // label
203- Dart_TimelineGetMicros (), // timestamp0
212+ FlutterTimelineEvent (name, // label
213+ gTimelineMicrosSource . load ()(), // timestamp0
204214 id, // timestamp1_or_async_id
205215 Dart_Timeline_Event_Async_End, // event type
206216 1 , // argument_count
@@ -210,8 +220,8 @@ void TraceEventAsyncEnd1(TraceArg category_group,
210220}
211221
212222void TraceEventInstant0 (TraceArg category_group, TraceArg name) {
213- FlutterTimelineEvent (name, // label
214- Dart_TimelineGetMicros (), // timestamp0
223+ FlutterTimelineEvent (name, // label
224+ gTimelineMicrosSource . load ()(), // timestamp0
215225 0 , // timestamp1_or_async_id
216226 Dart_Timeline_Event_Instant, // event type
217227 0 , // argument_count
@@ -226,8 +236,8 @@ void TraceEventInstant1(TraceArg category_group,
226236 TraceArg arg1_val) {
227237 const char * arg_names[] = {arg1_name};
228238 const char * arg_values[] = {arg1_val};
229- FlutterTimelineEvent (name, // label
230- Dart_TimelineGetMicros (), // timestamp0
239+ FlutterTimelineEvent (name, // label
240+ gTimelineMicrosSource . load ()(), // timestamp0
231241 0 , // timestamp1_or_async_id
232242 Dart_Timeline_Event_Instant, // event type
233243 1 , // argument_count
@@ -244,8 +254,8 @@ void TraceEventInstant2(TraceArg category_group,
244254 TraceArg arg2_val) {
245255 const char * arg_names[] = {arg1_name, arg2_name};
246256 const char * arg_values[] = {arg1_val, arg2_val};
247- FlutterTimelineEvent (name, // label
248- Dart_TimelineGetMicros (), // timestamp0
257+ FlutterTimelineEvent (name, // label
258+ gTimelineMicrosSource . load ()(), // timestamp0
249259 0 , // timestamp1_or_async_id
250260 Dart_Timeline_Event_Instant, // event type
251261 2 , // argument_count
@@ -257,9 +267,9 @@ void TraceEventInstant2(TraceArg category_group,
257267void TraceEventFlowBegin0 (TraceArg category_group,
258268 TraceArg name,
259269 TraceIDArg id) {
260- FlutterTimelineEvent (name, // label
261- Dart_TimelineGetMicros (), // timestamp0
262- id, // timestamp1_or_async_id
270+ FlutterTimelineEvent (name, // label
271+ gTimelineMicrosSource . load () (), // timestamp0
272+ id, // timestamp1_or_async_id
263273 Dart_Timeline_Event_Flow_Begin, // event type
264274 0 , // argument_count
265275 nullptr , // argument_names
@@ -270,8 +280,8 @@ void TraceEventFlowBegin0(TraceArg category_group,
270280void TraceEventFlowStep0 (TraceArg category_group,
271281 TraceArg name,
272282 TraceIDArg id) {
273- FlutterTimelineEvent (name, // label
274- Dart_TimelineGetMicros (), // timestamp0
283+ FlutterTimelineEvent (name, // label
284+ gTimelineMicrosSource . load ()(), // timestamp0
275285 id, // timestamp1_or_async_id
276286 Dart_Timeline_Event_Flow_Step, // event type
277287 0 , // argument_count
@@ -281,8 +291,8 @@ void TraceEventFlowStep0(TraceArg category_group,
281291}
282292
283293void TraceEventFlowEnd0 (TraceArg category_group, TraceArg name, TraceIDArg id) {
284- FlutterTimelineEvent (name, // label
285- Dart_TimelineGetMicros (), // timestamp0
294+ FlutterTimelineEvent (name, // label
295+ gTimelineMicrosSource . load ()(), // timestamp0
286296 id, // timestamp1_or_async_id
287297 Dart_Timeline_Event_Flow_End, // event type
288298 0 , // argument_count
@@ -297,6 +307,8 @@ void TraceSetAllowlist(const std::vector<std::string>& allowlist) {}
297307
298308void TraceSetTimelineEventHandler (TimelineEventHandler handler) {}
299309
310+ void TraceSetTimelineMicrosSource (TimelineMicrosSource source) {}
311+
300312size_t TraceNonce () {
301313 return 0 ;
302314}
0 commit comments