mirror of
https://github.com/flutter/flutter
synced 2024-10-13 03:32:55 +00:00
This reverts commit 6ef80b447f
.
This commit is contained in:
parent
dd7694256e
commit
7c0dfd5362
|
@ -202,10 +202,14 @@ mixin SchedulerBinding on BindingBase, ServicesBinding {
|
|||
if (!kReleaseMode) {
|
||||
int frameNumber = 0;
|
||||
|
||||
window.frameTimings.listen((FrameTiming frameTiming) {
|
||||
frameNumber += 1;
|
||||
_profileFramePostEvent(frameNumber, frameTiming);
|
||||
});
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
window.onReportTimings = (List<FrameTiming> timings) {
|
||||
for (FrameTiming frameTiming in timings) {
|
||||
frameNumber += 1;
|
||||
_profileFramePostEvent(frameNumber, frameTiming);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
import 'dart:async';
|
||||
import 'dart:developer' as developer;
|
||||
import 'dart:ui' show AppLifecycleState, Locale, AccessibilityFeatures, FrameTiming;
|
||||
import 'dart:ui' show AppLifecycleState, Locale, AccessibilityFeatures, FrameTiming, TimingsCallback;
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
|
@ -747,13 +747,25 @@ mixin WidgetsBinding on BindingBase, SchedulerBinding, GestureBinding, RendererB
|
|||
|
||||
if (_needToReportFirstFrame && _reportFirstFrame) {
|
||||
assert(!_firstFrameCompleter.isCompleted);
|
||||
WidgetsBinding.instance.window.frameTimings.first.then((FrameTiming _) {
|
||||
// TODO(liyuqian): use a broadcast stream approach
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
final TimingsCallback oldCallback = WidgetsBinding.instance.window.onReportTimings;
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
WidgetsBinding.instance.window.onReportTimings = (List<FrameTiming> timings) {
|
||||
if (!kReleaseMode) {
|
||||
developer.Timeline.instantSync('Rasterized first useful frame');
|
||||
developer.postEvent('Flutter.FirstFrame', <String, dynamic>{});
|
||||
}
|
||||
if (oldCallback != null) {
|
||||
oldCallback(timings);
|
||||
}
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
WidgetsBinding.instance.window.onReportTimings = oldCallback;
|
||||
_firstFrameCompleter.complete();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
@ -79,11 +79,12 @@ class TestServiceExtensionsBinding extends BindingBase
|
|||
await flushMicrotasks();
|
||||
if (ui.window.onDrawFrame != null)
|
||||
ui.window.onDrawFrame();
|
||||
final Future<ui.FrameTiming> firstFrameEventFired = window.frameTimings.first;
|
||||
ui.window.debugReportTimings(<ui.FrameTiming>[
|
||||
ui.FrameTiming(List<int>.filled(ui.FramePhase.values.length, 0)),
|
||||
]);
|
||||
await firstFrameEventFired;
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
if (ui.window.onReportTimings != null)
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
ui.window.onReportTimings(<ui.FrameTiming>[]);
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -132,18 +132,15 @@ void main() {
|
|||
});
|
||||
|
||||
test('Flutter.Frame event fired', () async {
|
||||
// We can't use Future in scheduler_test so we'll use dynamic instead.
|
||||
final dynamic firstFrameEventFired = window.frameTimings.first;
|
||||
|
||||
window.debugReportTimings(<FrameTiming>[FrameTiming(<int>[
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
window.onReportTimings(<FrameTiming>[FrameTiming(<int>[
|
||||
// build start, build finish
|
||||
10000, 15000,
|
||||
// raster start, raster finish
|
||||
16000, 20000,
|
||||
])]);
|
||||
|
||||
await firstFrameEventFired;
|
||||
|
||||
final List<Map<String, dynamic>> events = scheduler.getEventsDispatched('Flutter.Frame');
|
||||
expect(events, hasLength(1));
|
||||
|
||||
|
|
|
@ -286,7 +286,15 @@ class TestWindow implements Window {
|
|||
}
|
||||
|
||||
@override
|
||||
Stream<FrameTiming> get frameTimings => _window.frameTimings;
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
TimingsCallback get onReportTimings => _window.onReportTimings;
|
||||
@override
|
||||
set onReportTimings(TimingsCallback callback) {
|
||||
// use frameTimings. https://github.com/flutter/flutter/issues/38838
|
||||
// ignore: deprecated_member_use
|
||||
_window.onReportTimings = callback;
|
||||
}
|
||||
|
||||
@override
|
||||
PointerDataPacketCallback get onPointerDataPacket => _window.onPointerDataPacket;
|
||||
|
|
Loading…
Reference in a new issue