After each ComposeScene.render phase, send apply notifications and perform the corresponding changes. #563
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Because we hold off on sending the apply notifications during
ComposeScene.render
, any snapshot state changes that are made in one phase (recomposition, layout, draw) are not visible in the next phase until the next timeComposeScene.render
is called.Some widgets, however, use snapshot state changes to signal from one phase to the next that some work needs to be done. For example
TextState.layoutInvalidation
andTextState.drawScopeInvalidation
. Due to this, a change in thetext
parameter ofText
would not be realized until 3 render iterations have occurred.Proposed Changes
Call
between each phase of
ComposeScene.render
.Testing
Test: Added a new unit test to verify that the drawn text in
Text
changes after one render iteration.Issues Fixed
Fixes: JetBrains/compose-multiplatform#3137