We could get into a situation where the second time we rasterize a picture for an SKP, the raster cache detects that the same picture is being repeated in subsequent onscreen frames and then proceeds to rasterize the contents to an offscreen texture. This not only causes an unnecessary cache entry, but also shows the cached image in the final SKP trace (which is not what was originally displayed on screen).
runtime/BUILD.gn and ..core/BUILD.gn use flutter_runtime_mode which
is defined in common.gni. If the build comes through common/BUILD.gn
this is imported (implicity) but builds that depend on specific
files, like the Fuchsia build, won't have this imported. This
imports the gni from the build files that use it instead of relying
on it already being there.
* Add config properties to specify snapshot blob file names.
This adds the ability of the shell to override the default
dart aot snapshot blob file names, and it wires up Android's
FlutterMain to recognize the properties in the app's manifest.
This will be used for flutter applications that build their
binary snapshots into files other than the default ones
that the engine uses.
We don't yet have support for text on Fuchsia. This patch add stub
implementations of Paragraph and ParagraphBuilder so that Flutter apps
that use text don't error out. Instead, the text is 0x0 and invisible.
Also, teach MojoServices not to crash if it hasn't been created by the
time Dart tries to use it.
After this patch, we're able to run spinning_square on Fuchsia. I've
left some TODO comments about some shortcuts I've taken that we'll need
to improve in the future.
This patch should contain all the code we need to run Flutter on
Fuchsia's software framebuffer (without text). I haven't actually tried
running the code, so I'm sure it doesn't work yet.
Also, rename SkyViewClient to RuntimeDelegate. These names are more
sensible.
This patch also cleans up the RuntimeDelegate a bit, for example by
removing support for flushing real-time events, which aren't used.
* Move dart:mojo.internal to //flutter/lib/mojo
To be parallel with the other built-in libraries.
* Move DartRuntimeHooks into //flutter/lib/ui
This code manipulates natives.dart, which is part of //flutter/lib/ui.
This patch removes the //flutter/sky/engine dependency from //flutter/lib/ui,
which lets us build the bulk of the dart:ui library without needing to build
//flutter/sky/engine.
There are now three ways to start Dart applications:
1) From a precompiled snapshot
2) From a snapshot
3) From source
When loading from source, we no longer use the complex data pipe /
dependency catcher mechanism. Instead, we just load the source
synchronously from the file system. This is appropriate because running
from source is used only during development and not during production.
The previous design was built assuming we would want to run from source
over the network, which meant we needed to be able to load source
asynchronously over a high latency channel.