Add new optional named oldLayer arguments to all push* methods of the SceneBuilder class.
When not null oldLayer signals to the engine that the intent is to update a layer rendered in a previous frame. The engine may optionally use that signal to reuse the resources allocated for that layer in the previous frame. For example, on the Web we can reuse existing DOM nodes and some of their properties and move fewer nodes around the tree.
The return type of each push method has been tightened up. Instead of having all methods return the same EngineLayer type, each method has its own unique layer type, e.g. OffsetEngineLayer. oldLayer parameters match the returned type. This prevents the framework (and other developers using dart:ui directly) from accidentally supplying an engine layer of the wrong type.
Using it, a Flutter app can monitor missing frames in the release mode, and a custom Flutter runner (e.g., Fuchsia) can add a custom FrameRasterizedCallback.
Related issues:
https://github.com/flutter/flutter/issues/26154https://github.com/flutter/flutter/issues/31444https://github.com/flutter/flutter/issues/32447
Need review as soon as possible so we can merge this before the end of May to catch the milestone.
Tests added:
* NoNeedToReportTimingsByDefault
* NeedsReportTimingsIsSetWithCallback
* ReportTimingsIsCalled
* FrameRasterizedCallbackIsCalled
* FrameTimingSetsAndGetsProperly
* onReportTimings preserves callback zone
* FrameTiming.toString has the correct format
This will need a manual engine roll as the TestWindow defined in the framework needs to implement onReportTimings.
Corects a bnuch of typeos throughout teh engien codebsae. Also makes
a couple minor Commonwealth -> US spelling adjustments for consistency
with the rest of Flutter's codebase.
Made use of `misspell` tool:
https://github.com/client9/misspell
Remove the extra `decodedCacheRatioCap` parameter, and the
`_frameBitmaps` member from `Codec`. This means that small looped images
will consume more CPU but prevents us from hitting OOM exceptions based
on trying to render multiple larger images.
Also switch to fDisposalMethod for caching frames.
Previously we looped over every single SkCodec::FrameInfo, tracked its
`fRequiredFrame`, and then saved any frames matching those indeces.
Doing this instead avoids that initialization loop and extra data
structure.
* Dart side resize primitives exposed
* Write the codec side changes
* return un-scaled image if we can not allocate bitmap
* Format _instantiateImageCodec calls to be single lined
Move null check for size to be inner
* Address CR comments and make image resize dimensions container
* Round not trunc, also format
* Add tests, remove ImageResizeDims from api surface
* Make placeholder value public
* Make the api side changes
* Add a feature to resize pixels and also add tests
* Fix grammar and add more info
This default is already set in the framework, but this also needs to be
set in the binding layer to preserve the same behavior when the
deprecated framework parameter is removed.
* Revert "fix toString (#8688)"
This reverts commit 9fa7336784b56ef70fd3580ac54d2939d1faa5a0.
* Revert "Make Rect and RRect use 64 bit doubles, and make them const-able (#8565)"
This reverts commit c12315273f6344175dae748ec1f23e15b4e7d59e.
Adds support for pointer signals, in a way that will support both discrete events (e.g., scroll wheels, flutter/flutter#22762) and continuous gestures (e.g., trackpad scroll, flutter/flutter#21953).
Also exposes these new event options to the embedder. Does not include code to send the
new events from the platform shells.
* Roll back three Dart SDK rolls
Revert "Roll src/third_party/dart 75ee523f91..4cff5a4fd6 (6 commits)"
Revert "Roll src/third_party/dart 5ddd157809..75ee523f91 (19 commits)"
Revert "Roll src/third_party/dart c92d5ca288..5ddd157809 (153 commits)"
`pub upgrade` appears to fail 100% reproducibly on broken on Windows.
This rollback rolls back both what appears to be the breaking roll (61fc178)
and the following roll.
This reverts commit 0053c1d5064931d7a690b3d8888d15d72785a079.
This reverts commit 1cf6b8b64d42aefcbc6e7d78a2e6df706962751a.
This reverts commit 61fc1786fd98f48ee355f800cf5d7aef0fff985b.
* Revert "Revert "Revert "Remove unnecessary entry-point closurization. (#7827)" (#7876)" (#7904)"
This reverts commit 93eeb48baee5c24047a4a3cf5b1db234ecc48683.