This reverts commit 74823c212d418597775d332d8c272673c83f6f63 and relands our reland https://github.com/flutter/engine/pull/17915.
Additionally, we fixed the cull rect logic in `OpacityLayer::Preroll` which is the root cause of https://github.com/flutter/flutter/issues/56298. We've always had that root problem before but it did not trigger performance issues because we were using the OpacityLayer's `paint_bounds`, instead of its child's `paint_bounds` for preparing the layer raster cache. A correct handling of the cull rect should allow us to cull at any level.
It also turns out that our ios32 (iPhone4s) performacne can regress a lot
without snapping. My theory is that although the picture has a
fractional top left corner, many drawing operations inside the picture
have integral coordinations. In older hardwares, keeping those
coordinates integral seems to be performance critical.
To avoid flutter/flutter#41654, the snapping
will still be disabled if the matrix has non-scale-translation
transformations.
This does some long-overdue refactoring of the spaghetti code that grew in the GLFW embedding to begin providing a clearer separation between the engine and the window. It is now possible to register plugins, and run the runloop, on a headless engine, which makes headless mode much more usable. This is useful in some automated testing environments.
There is more refactoring that should be done in the future, but this is a good incremental point to stop as the PR is already large, and it provides useful new functionality as-is.
The engine was using a global to store a timestamp representing the
launch of the engine. This timestamp is initialized with a JNI call
on Android and during shell setup on other platforms. Later the
timestamp is added to a FlutterEngineMainEnter timeline event used to
measure engine startup time in benchmarks.
This PR removes the global and the JNI call and moves the timestamp
into the settings object.
* Fixed ChildSceneLayer elevation issue on Fuchsia.
ChildSceneLayers would draw on top of stacked Flutter content on
Fuchsia if not wrapped up in a Material widget, i.e. a
PhysicalShapeLayer. This patch pushes the logic from there to all
types of Layers.
* changes for getting the configuration
* running autofill
* simplifications, remove unused map
* more changes
* make single autofill fields work. remove print messages
* remove an extra line
* remove extra file. also update chrome version
* addressing reviewers comments
* addressing reviewer comments
* addressing reviewer comments
* addressing reviewer comments
* changing comments
* changing comments
* adding a comment on subscriptions lifecycle
* fixing a bug which was failing the existing unit tests
* add unit tests for AutofillInfo and EngineAutofillForm. add autocomplete to textarea
* add unit tests for method channels
* remove json from the end of the file
* do not change the input type for the focused element
* check name instead of autocomplete for firefox
* check name instead of autocomplete for firefox in other methods as well
* fixing a bug in the autofillhints file, testing if firefox is failing for username hint or for all autocomplete values
* fix the breaking unit test
* Implement Color filter for images
* Add blend modes
* complete set of blend modes
* Add golden test for blend modes, fix size setting when using drawImage instead of drawImageRect
* Add comments
* Update golden locks
* Fix analyzer errors
Co-authored-by: Harry Terkelsen <hterkelsen@users.noreply.github.com>
* fix blend group count in test