Quickly fix start up tests (#37503)

The hack here is to flush the timeline events so the host that
waits for the 'Rasterized first useful frame' event won't hang.
Previously 'Widgets built first useful frame' didn't cause this
trouble because the GPU thread will naturally add more events later
and cause a fresh. The `Rasterized...` event, however, is likely
to be the last (or nearly the last) event during the app start up.

rmacnak and I will figure out a better way to fix it next week.
We're having this quick hack now to fix our device lab performance
tests so we won't miss the data points.
This commit is contained in:
liyuqian 2019-08-02 16:27:28 -07:00 committed by GitHub
parent 5fb2d2aeea
commit 7f77f0177a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -746,6 +746,24 @@ mixin WidgetsBinding on BindingBase, SchedulerBinding, GestureBinding, RendererB
if (!kReleaseMode) {
developer.Timeline.instantSync('Rasterized first useful frame');
developer.postEvent('Flutter.FirstFrame', <String, dynamic>{});
// TODO(liyuqian): figure out a more elegant fix with rmacnak.
//
// The hack here is to flush the timeline events so the host that
// waits for the 'Rasterized first useful frame' event won't hang.
// Previously 'Widgets built first useful frame' didn't cause this
// trouble because the GPU thread will naturally add more events later
// and cause a fresh. The `Rasterized...` event, however, is likely
// to be the last (or nearly the last) event during the app start up.
//
// rmacnak and I will figure out a better way to fix it next week.
// We're having this quick hack now to fix our device lab performance
// tests so we won't miss the data points.
{
for (int i = 0; i < 100; i += 1) {
developer.Timeline.instantSync('Flush');
}
}
}
if (oldCallback != null) {
oldCallback(timings);