-
Notifications
You must be signed in to change notification settings - Fork 6k
Unregister onFrameAvailable callbacks when a TextureEntry is released #6079
Conversation
4e9866e to
80dd84e
Compare
| @Override | ||
| public void onFrameAvailable(SurfaceTexture texture) { | ||
| // NB: This callback may be called on an arbitrary thread. | ||
| if (SurfaceTextureRegistryEntry.this.surfaceTexture.isReleased()) { // isReleased is synchronized in JNI code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Android BUILD failed.
Unfortunately, this API only seems to be available in Android 26 and up. You will need to do a SDK version check here too :-/
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right. I also realized that it's still racy: if all of the deinitialization happens between checking isReleased() and accessing mNativeView we'd get null anyway.
We really should pass a Handler and execute the callback on the main thread. Is nativeMarkTextureFrameAvailable actually meant to be thread-safe?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually the callback is actually run on the main thread:
// Although we claim the thread is arbitrary, earlier implementation would
// prefer to send the callback on the creating looper or the main looper
// so we preserve this behavior here.
http://cs/aosp-master/frameworks/base/graphics/java/android/graphics/SurfaceTexture.java?l=203
And Flutter relies on this:
http://cs/github/flutter/engine/shell/common/shell.cc?l=607
So I passed a Handler for the current thread explicitly here and now we can safely check SurfaceTextureRegistryEntry.released.
PTAL.
797145e to
b75e8ff
Compare
| nativeMarkTextureFrameAvailable(mNativeView.get(), SurfaceTextureRegistryEntry.this.id); | ||
| } | ||
| }); | ||
| }, new Handler()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why the new Handler()?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a comment. See also the discussion with Mehmet in the comments above.
| // Even though we make sure to unregister the callback before releasing, | ||
| // SurfaceTexture has a data race when accessing the callback, so the callback may | ||
| // still be called by a stale reference after released==true and mNativeView==null. | ||
| // See b/113099095. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we avoid referencing buganizer from the framework?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If necessary, please copy the buganizer bug over to GitHub and then reference that here instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed the bug reference. (FWIW, the buganizer bug is against Android base system).
|
The changes look fine to me. I also added Chinmay and Jason for a sanity check. I'm not familiar enough with FlutterView and FlutterNativeView yet to be sure there aren't any implications to this. |
Otherwise the callbacks may be called after FlutterNativeView is destroyed and is null. Also defensively check for whether the texture is already released in the callback because the callback may be called from another thread by a stale reference (see the comment). This closes flutter/flutter#20951.
|
Folks, what can we do to get this merged? |
|
@mehmetf Do one of us need to merge this in? |
flutter/engine@de4c7a5...5063a8a git log de4c7a5..5063a8a --no-merges --oneline 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...6d0fbc7 git log de4c7a5..6d0fbc7 --no-merges --oneline 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...b22badf git log de4c7a5..b22badf --no-merges --oneline b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...3a7d0b5 git log de4c7a5..3a7d0b5 --no-merges --oneline 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...0981731 git log de4c7a5..0981731 --no-merges --oneline 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...e6d9b34 git log de4c7a5..e6d9b34 --no-merges --oneline e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...a0f30b3 git log de4c7a5..a0f30b3 --no-merges --oneline a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...f6ad3e0 git log de4c7a5..f6ad3e0 --no-merges --oneline f6ad3e0 Roll Tonic (flutter/engine#6177) a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...108e0a6 git log de4c7a5..108e0a6 --no-merges --oneline 108e0a6 Add transparency helpers to FlutterView.java (flutter/engine#6172) f6ad3e0 Roll Tonic (flutter/engine#6177) a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...572753f git log de4c7a5..572753f --no-merges --oneline 572753f Roll src/third_party/skia 343553a1fe9e..ffbcc3fadfa1 (6 commits) (flutter/engine#6178) 108e0a6 Add transparency helpers to FlutterView.java (flutter/engine#6172) f6ad3e0 Roll Tonic (flutter/engine#6177) a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...ade0f22 git log de4c7a5..ade0f22 --no-merges --oneline ade0f22 Remove unused file picture_serializer. (flutter/engine#6179) 572753f Roll src/third_party/skia 343553a1fe9e..ffbcc3fadfa1 (6 commits) (flutter/engine#6178) 108e0a6 Add transparency helpers to FlutterView.java (flutter/engine#6172) f6ad3e0 Roll Tonic (flutter/engine#6177) a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...1768bed git log de4c7a5..1768bed --no-merges --oneline 1768bed Roll src/third_party/skia ffbcc3fadfa1..71f8475a0dba (3 commits) (flutter/engine#6181) ade0f22 Remove unused file picture_serializer. (flutter/engine#6179) 572753f Roll src/third_party/skia 343553a1fe9e..ffbcc3fadfa1 (6 commits) (flutter/engine#6178) 108e0a6 Add transparency helpers to FlutterView.java (flutter/engine#6172) f6ad3e0 Roll Tonic (flutter/engine#6177) a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...897178c git log de4c7a5..897178c --no-merges --oneline 897178c Roll src/third_party/skia 71f8475a0dba..33d3d31a7e28 (6 commits) (flutter/engine#6182) 1768bed Roll src/third_party/skia ffbcc3fadfa1..71f8475a0dba (3 commits) (flutter/engine#6181) ade0f22 Remove unused file picture_serializer. (flutter/engine#6179) 572753f Roll src/third_party/skia 343553a1fe9e..ffbcc3fadfa1 (6 commits) (flutter/engine#6178) 108e0a6 Add transparency helpers to FlutterView.java (flutter/engine#6172) f6ad3e0 Roll Tonic (flutter/engine#6177) a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...5f61056 git log de4c7a5..5f61056 --no-merges --oneline 5f61056 Revert "Dart SDK roll for 2018/09/04 (flutter#6161)" (flutter/engine#6183) 897178c Roll src/third_party/skia 71f8475a0dba..33d3d31a7e28 (6 commits) (flutter/engine#6182) 1768bed Roll src/third_party/skia ffbcc3fadfa1..71f8475a0dba (3 commits) (flutter/engine#6181) ade0f22 Remove unused file picture_serializer. (flutter/engine#6179) 572753f Roll src/third_party/skia 343553a1fe9e..ffbcc3fadfa1 (6 commits) (flutter/engine#6178) 108e0a6 Add transparency helpers to FlutterView.java (flutter/engine#6172) f6ad3e0 Roll Tonic (flutter/engine#6177) a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (flutter#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter/engine@de4c7a5...5f61056 git log de4c7a5..5f61056 --no-merges --oneline 5f61056 Revert "Dart SDK roll for 2018/09/04 (#6161)" (flutter/engine#6183) 897178c Roll src/third_party/skia 71f8475a0dba..33d3d31a7e28 (6 commits) (flutter/engine#6182) 1768bed Roll src/third_party/skia ffbcc3fadfa1..71f8475a0dba (3 commits) (flutter/engine#6181) ade0f22 Remove unused file picture_serializer. (flutter/engine#6179) 572753f Roll src/third_party/skia 343553a1fe9e..ffbcc3fadfa1 (6 commits) (flutter/engine#6178) 108e0a6 Add transparency helpers to FlutterView.java (flutter/engine#6172) f6ad3e0 Roll Tonic (flutter/engine#6177) a0f30b3 Roll src/third_party/skia 9d1c88d9912d..343553a1fe9e (16 commits) (flutter/engine#6175) e6d9b34 Remove the old location of the ICU data asset (flutter/engine#6170) 9f0ad8b Fixes negative end selection offset. (flutter/engine#6171) 0981731 Enable transparent FlutterViews (flutter/engine#6163) 3a7d0b5 Roll buildroot to 7aadfaf (flutter/engine#6169) 564d214 Roll src/third_party/skia d0f0cb8ffc5e..9d1c88d9912d (12 commits) (flutter/engine#6168) 6af60d7 Remove obsolete discovery mechanism from FlutterView (flutter/engine#6157) b22badf Dart SDK roll for 2018/09/04 (flutter/engine#6161) 6d0fbc7 Roll src/third_party/skia 9478f7a38e6c..d0f0cb8ffc5e (1 commits) (flutter/engine#6167) 5063a8a Roll src/third_party/skia 72a02112a99f..9478f7a38e6c (1 commits) (flutter/engine#6166) 19a3bc8 Roll src/third_party/skia 85f4e40c5481..72a02112a99f (1 commits) (flutter/engine#6165) 9643a50 Roll src/third_party/skia fddc6fa394cb..85f4e40c5481 (1 commits) (flutter/engine#6164) 6ad3183 Fix windows build. (flutter/engine#6162) 30af2f2 Roll src/third_party/skia e486bbaae296..fddc6fa394cb (2 commits) (flutter/engine#6159) b32ceaf Add some more logs for diagnosing screenshot failures (flutter/engine#6156) c173655 Roll src/third_party/skia b84576af0a43..e486bbaae296 (9 commits) (flutter/engine#6155) aaf98fb Use double multiplication by a scale instead of 3 divides for speed. (flutter/engine#6154) 593ed59 Revert "Use Skia normalize again after Skia precision fix. (#6121)" (flutter/engine#6122) 137389a Roll src/third_party/skia a45e1a71f548..b84576af0a43 (16 commits) (flutter/engine#6153) f89a386 Roll src/third_party/skia cff3fd834ca8..a45e1a71f548 (1 commits) (flutter/engine#6152) b0b8daa Unregister onFrameAvailable callbacks when a TextureEntry is released. (flutter/engine#6079) 2dc8271 Roll src/third_party/skia 24e58341fbcd..cff3fd834ca8 (1 commits) (flutter/engine#6151) eea3a21 Roll src/third_party/skia bf67741140fd..24e58341fbcd (2 commits) (flutter/engine#6148) bdcbe80 Roll src/third_party/skia 88119de2b849..bf67741140fd (1 commits) (flutter/engine#6147) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary.
flutter#6079) Otherwise the callbacks may be called after FlutterNativeView is destroyed and is null. Also defensively check for whether the texture is already released in the callback because the callback may be called from another thread by a stale reference (see the comment). This closes flutter/flutter#20951.
flutter#6079) Otherwise the callbacks may be called after FlutterNativeView is destroyed and is null. Also defensively check for whether the texture is already released in the callback because the callback may be called from another thread by a stale reference (see the comment). This closes flutter/flutter#20951.
Otherwise the callbacks may be called after FlutterNativeView is destroyed and is null.
Also defensively check for whether the texture is already released in the callback because the callback may be called from another thread by a stale reference (see the comment).
This closes flutter/flutter#20951.