Update Picture rasterization for toImage to accept a layer tree, optionally flattening on the raster thread if present.
Update Deferred GPU image for toImageSync to accept a layer tree, flattening it the first time it creates an image, storing the resulting display list.
This is also a performance fix for the zoom page transition, which currently does too much work on the UI thread on frame 1
* Reland "dart:ui conversion from native to FfiNative" (#33116)"
This reverts commit d85395558f3d72c64d9c75e00c6ebdd5bf4583e3.
Resolves merge conflicts and updates modified/newly added
methods, and fixes the incorrect argument counts
on some of the Path methods.
Merges most (but not all) of the impeller .clang-tidy rules into the
main .clang-tidy config. Merges:
readability-identifier-naming.PrivateMemberSuffix (_)
readability-identifier-naming.EnumConstantPrefix (k)
modernize-use-default-member-init.UseAssignment
Does not merge:
readability-identifier-naming.PublicMethodCase (CamelCase)
readability-identifier-naming.PrivateMethodCase (CamelCase)
These last two are not merged due to the non-trivial number of existing
field accessors that use field_name() methods to directly return
field_name_. While these are permitted by the C++ style guide, we may
want to move to a single, simple rule and name everything in CamelCase.
These can be enabled in a followup patch.
No new tests added, since this change is style-only.
Previously, using Platform.executable (from dart:io) returned null (if
non-null-by-default was disabled) or threw an exception (if NNBD was
enabled) since we weren't setting it.
We now pass the executable name to Dart during VM startup based on the
first value in the FlutterProjectArgs::command_line_argv array passed to
FlutterEngineRun (or FlutterEngineInitialize) on startup. argv[0] (if
specified) is explicitly documented as being required to be the
executable name in embedder.h. In the case where no argv[0] is
specified, we instead set Platform.executable to "Flutter" in order to
avoid violating the (non-nullable) type annotation on
Platform.executable.
Note that dart::bin::SetExecutableName() does NOT make a copy of the
input string, so that value needs to be available for the entire lifetime
of the VM.
This also adds EmbedderConfigBuilder::SetExecutableName() to support
setting a fake executable name in unittests. By default, we continue to
set the name "embedder_unittest" unless overridden using this method.
See: https://api.flutter.dev/flutter/dart-io/Platform/executable.html
See: https://github.com/dart-lang/sdk/issues/48427
Issue: https://github.com/flutter/flutter/issues/83921
For isolates spawned by the application via `Isolate.spawn()`ed, the VM
will create a "lightweight" isolate and invoke the `initialize_isolate`
embedder callback to initialize it.
The embedder-provided callback will be invoked with the active isolate
and is expected to return with that active isolate - irrespective of
whether it succeeded to initialize or not.
=> The unsuccessful path was using `Dart_ExitIsolate()` - which is
incorrect.
This PR fixes that by not exiting the isolate. As a side-effect of the
fix, we also do less `Dart_EnterIsolate()`/`Dart_ExitIsolate()` calls in
initialization (which makes it faster) and handle failure to spawn the
root isolate. Furthermore this PR removes some dead code and replaces it
with `FML_DCHECK()`s instead.
The PR adds a test that will set the root library to null which will make the
engine fail initializing of the isolate and therefore trigger this error handling
path.
Fixes https://github.com/flutter/flutter/issues/90478
* Roll Dart SDK from e256855d07ba to a3b62f366529 (4 revisions) (#21809)
* Roll Dart SDK from e655b9a3839e to b58cfe5ab24e (1 revision) (#21920)
* Roll Dart SDK from fc82eeed7df3 to 8be6a08153cc (1 revision) (#22005)
* Roll Dart SDK from fe12b0536f42 to a188781c9fc8 (1 revision) (#22379)
* Roll Skia from 95b5fb9213d7 to 68ac3b9ec3ca (17 revisions) (#22713)
* Roll Dart SDK from 2c74e62a050c to f9760fc12871 (5 revisions) (#22881)
* Roll Dart SDK from 68d1c7504f7d to f166571c7bc4 (1 revision) (#23056)
* Roll Dart SDK from 970d74c42472 to fd72dbb5b82b (1 revision) (#23820)
* Trigger an engine build to re-open the tree (#26056)
This commit is empty and simply triggers a new build to open the tree.
Commit e9ca785106ddc672d945062758800bdf1dd0aa68 was re-built after a
succesful build; upload to the cloud storage bin failed.
* Roll Skia from d9a7c5953df3 to 827bb729a84d (2 revisions) (#26096)
* Roll Dart SDK from d616108772bd to a527411e5100 (0 revision) (#26156)
* Roll Dart SDK from bb9d96ffbafa to 7250fd6379b2 (0 revision) (#26374)
* Roll Dart SDK from 202c42e3395c to 2e9c4305a6aa (1 revision) (#26578)
* Roll buildroot to 275038b8be7196927b0f71770701f3c2c3744860 (#26945)
* [test] empty commit (#27599)
https://flutter-review.googlesource.com/c/infra/+/15660
* Roll Dart SDK from e1414001c93b to 686070850ee3 (1 revision) (#27620)
* Empty commit to apply latest LUCI config (#27767)
* Roll Dart SDK from 3b11f88c96a5 to 976f160b547f (3 revisions) (#29436)
* Empty commit to fix main tree status (#29760)
* Add option to enable serial GC
This option can be used to avoid thread contention issues for the UI thread when running on low power devices with limited number of cores.
* Fix format.
* Added test.
* Add build rule.
* Address review comments.
Co-authored-by: skia-flutter-autoroll <skia-flutter-autoroll@skia.org>
Co-authored-by: Chris Bracken <chris@bracken.jp>
Co-authored-by: Casey Hillers <chillers@google.com>