-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Disable MeasureInvalidated propagation by default / clean-up legacy layouts / fix iOS CV items resize
#25664
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
a465e64 to
5bef429
Compare
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
917a208 to
15d5364
Compare
MeasureInvalidated bubble-up mechanism and clean-up legacy layouts.MeasureInvalidated bubble-up mechanism / clean-up legacy layouts / fix iOS CV items resize
| } | ||
| if (trigger == InvalidationTrigger.HorizontalOptionsChanged || trigger == InvalidationTrigger.VerticalOptionsChanged) | ||
| { | ||
| ComputeConstraintForView(view); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been moved to VisualElement.InvalidateMeasureInternal()
15d5364 to
46b0c6a
Compare
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
46b0c6a to
4b243d5
Compare
MeasureInvalidated bubble-up mechanism / clean-up legacy layouts / fix iOS CV items resizeMeasureInvalidated propagation by default / clean-up legacy layouts / fix iOS CV items resize
23499a5 to
a53a1e6
Compare
a53a1e6 to
4b38afa
Compare
|
Yes, regarding your issue the fix is the same, I've just improved the solution to also fix other issues. |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
17c2504 to
ddf5b2d
Compare
373bb74 to
78781b2
Compare
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
|
Nice work, eagerly awaiting this merge. Is there an ETA? |
|
@albyrock87 @PureWeen |
Have you validated this resolves your issue? |
To be honest, no. I can't find a build of this PR. Can you point me to one? |
@FlavioGoncalves-Cayas you can download the NuGet packages to a local folder from here: Pick the If you're still on .NET8 you can try out my custom Android/iOS MAUI build from GitHub feed https://github.com/nalu-development/maui-custom/pkgs/nuget/Microsoft.Maui.Controls which contains this PR and other of my PRs still pending merge. Anyway I think MAUI team would appreciate you testing the nuget packages from this PR. |
|
/azp run |
Also, if you have a repro of your performance issues that would be helpful as well |
|
Azure Pipelines successfully started running 3 pipeline(s). |
|
I've been asked to separate this into multiple smaller PRs to reduce time to review and impact evaluation, so I'm moving this to |
Description of Change
This PR includes #25465 and improves it more in order to have iOS CV1 and CV2 handlers rely on native invalidation mechanism rather than subscribing to
MeasureInvalidated.This allows us disable
MeasureInvalidatedpropagation (except forCompatibility.Layoutchains).I've included an app switch to optionally disable the propagation for customers not relying on this event anymore.
What's included
MeasureInvalidatedpropagation (basically "revert"s MakeMeasureInvalidatedevent work correctly #23052 and goes back to 8.0.82) behaviorCompatibility.Layoutuseless and harming code (causing additional unneeded invalidations)SetNeedsLayoutmechanism which now relies on a more-measurable while-loopUIScrollViewsIMauiPlatformViewinterface on iOS with two methodsInvalidateAncestorsMeasuresWhenMovedToWindow()to schedule propagating invalidation when view is attached toWindowInvalidateMeasure(bool isPropagating)to normally simply callSetNeedsLayouton the viewUsing #25671 UI test I've been able to measure the benefits of this PR over
mainbranch.Please note
no-resizeon CV2main(as item size detection was not implemented).mainPRmainPRAs we can see, CV1 is doing better than CV2 but anyway both look blazing fast compared to
mainwhere hiccups are very noticeable with this app!Also note that the faster you scroll, the higher improvements we can get compared to
main.Issues Fixed
Fixes #25650
Fixes #24996
Fixes #25391
Fixes #25264
Videos of AllTheLists
Captured using a modified version of https://github.com/davidortinau/AllTheLists.git compiled in
Releasemode with a constant number of lessons generated (high number).challenging.patch
Using CV1
PR-25664-CV1-AllTheLists.mp4
Using CV2
PR-25664-CV2-AllTheLists.mp4