Use wasm-compatible conditional import in timeline.dart, avoid emitting timeline events in SchedulerBinding (#144682)

This commit is contained in:
Martin Kustermann 2024-03-06 23:08:24 +01:00 committed by GitHub
parent 7a88767a1b
commit aba7bc3f42
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 3 deletions

View file

@ -8,7 +8,7 @@ import 'dart:typed_data';
import 'package:meta/meta.dart';
import '_timeline_io.dart'
if (dart.library.js_util) '_timeline_web.dart' as impl;
if (dart.library.js_interop) '_timeline_web.dart' as impl;
import 'constants.dart';
/// Measures how long blocks of code take to run.

View file

@ -1318,13 +1318,17 @@ mixin SchedulerBinding on BindingBase {
final List<FrameCallback> localPostFrameCallbacks =
List<FrameCallback>.of(_postFrameCallbacks);
_postFrameCallbacks.clear();
Timeline.startSync('POST_FRAME');
if (!kReleaseMode) {
FlutterTimeline.startSync('POST_FRAME');
}
try {
for (final FrameCallback callback in localPostFrameCallbacks) {
_invokeFrameCallback(callback, _currentFrameTimeStamp!);
}
} finally {
Timeline.finishSync();
if (!kReleaseMode) {
FlutterTimeline.finishSync();
}
}
} finally {
_schedulerPhase = SchedulerPhase.idle;