It crashes. We either need to make it safe to call before
Dart_Initialize on Mac or we need to use some other way of measuring
startup time.
Fixes#4006
When developing the engine from Xcode, it is useful to see log output in Xcode's UI. We were redirecting streams away so that the tools could pick read these logs. With the change to the scheme, when running from Xcode, the logs will show up in Xcode's UI. When, running from the tools, that flag will not be present and the tools will work as they always have.
Earlier, the dynamic service loader was part of the main application
bundle. But now, we package it into Flutter.framework and let the user
control "main". The old path was looking for the manifest in the wrong
spot.
This patch:
- makes dart traces (coming from the VM and the timeline API)
available to mojo:tracing
- adds --vm-complete-timeline parameter, which makes the Dart VM enable all
categories of timeline traces from the beginning, allowing to do startup
tracing
This is based on the equivalent support in dart content handler.
Fixes https://github.com/flutter/flutter/issues/3162.
We no longer provide the main function for Flutter apps on iOS. Instead, we
just provide Flutter.framework, and the end-developer provides main.
Also, remove unused build rules for building Runner.app. We don't build that
target anymore.
* Move node implementation to Objective C
This changes AccessibilityBridge::Node (C++) to be AccessibilityNode (objc)
in order to have the nodes returned directly as ui accessibility elements.
This buys us a few things:
1) We can now return an element tree instead of a flat list, thus negating
the need to maintain a global rect and global translation
2) We use less memory since we don't need to instantiate both nodes and
their ensuing accessibility elements
3) accessibility elements can now implement the methods necessary to respond
to events like user scrolling
https://github.com/flutter/flutter/issues/1664
After this patch, main_ios.mm now consumes Flutter.framework via public APIs.
This patch prepares us to move Flutter on iOS over to consuming
Flutter.framework as a binary artifact.
When there are no pending timers, we should sit in glfwWaitEvents instead of
continuously calling glfwPollEvents. This reduces CPU utilization
significantly.
All the headers for Flutter.framework are now in framework/Headers and all the
source files for Flutter.framework are now in framework/Source. Previously it
was unclear that FlutterAppDelegate and main_ios.mm weren't part of
Flutter.framework. (They still build as part of the framework, but that's
something I'll fix in a later patch.)
Previously the AOT snapshot was packaged as a dynamic library (similar to the
scheme used on iOS). This change eliminates the need for a native code
toolchain when building for AOT.
This include build system changes for selecting Dart's precompiler mode
plus a way to locate and load the precompiled snapshot library from an
Android application
Instead, make Layer::Paint take a new PaintContext that has just exactly
the state that it needs, mirroring PrerollContext. Also, rename
PaintContext to CompositorContext because it holds the context for the
whole compositor.