-
Notifications
You must be signed in to change notification settings - Fork 6k
Do not disable partial repaint based on thread merging state #54219
Conversation
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.
LGTM
I think I found an issue with this, sorry for not realizing during the review. We actually need to wait for one frame after the platform view is removed from the scene. Because that last frame is transitional and required for removing the PVs, and will result in the diff being incorrect. |
reason for revert: incorrect rendering on last frame after platform view is removed. |
…#54219)" (#54230) Reverts: #54219 Initiated by: jonahwilliams Reason for reverting: incorrect rendering on last frame after platform view is removed. Original PR Author: knopp Reviewed By: {jonahwilliams} This change reverts the following previous change: Currently we force full repaint when thread merging is detected, but that is not a good way to determine whether platform view is in hierarchy when thread merging is no longer needed. Alternative solution here makes the PlatformViewLayer force full repaint when diffing. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
That makes sense :-/ When removing the view, if nothing else changes, we remove the overlay surface but do not repaint the base layer. Missed that when testing. The solution would be to make the paint region of the platform view layer covering the whole frame, instead of simply modifying the |
Should be fixed by 34b2827. I'll write a test for this tomorrow and will make a new PR. |
…152583) flutter/engine@a4b88a3...08f9be3 2024-07-30 chris@bracken.jp [iOS] Delete unused create_ios_framework.py (flutter/engine#54227) 2024-07-30 skia-flutter-autoroll@skia.org Roll Skia from b9b208f11c67 to 4e31906b6312 (1 revision) (flutter/engine#54226) 2024-07-30 jonahwilliams@google.com [engine] Split encode and submit into two different surface frame callbacks. (flutter/engine#54200) 2024-07-30 matej.knopp@gmail.com Do not disable partial repaint based on thread merging state (flutter/engine#54219) 2024-07-30 skia-flutter-autoroll@skia.org Roll Dart SDK from 14b51d32e3a6 to e16dc217b1ac (1 revision) (flutter/engine#54221) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC jacksongardner@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Relands #54219 reverted in #54230. The tracked area of `PlatformViewLayer` now covers entire frame ensuring full repaint when platform view is removed. Added `FullRepaintAfterRemovingLayer` test. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat
…lutter#152583) flutter/engine@a4b88a3...08f9be3 2024-07-30 chris@bracken.jp [iOS] Delete unused create_ios_framework.py (flutter/engine#54227) 2024-07-30 skia-flutter-autoroll@skia.org Roll Skia from b9b208f11c67 to 4e31906b6312 (1 revision) (flutter/engine#54226) 2024-07-30 jonahwilliams@google.com [engine] Split encode and submit into two different surface frame callbacks. (flutter/engine#54200) 2024-07-30 matej.knopp@gmail.com Do not disable partial repaint based on thread merging state (flutter/engine#54219) 2024-07-30 skia-flutter-autoroll@skia.org Roll Dart SDK from 14b51d32e3a6 to e16dc217b1ac (1 revision) (flutter/engine#54221) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC jacksongardner@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…lutter#152583) flutter/engine@a4b88a3...08f9be3 2024-07-30 chris@bracken.jp [iOS] Delete unused create_ios_framework.py (flutter/engine#54227) 2024-07-30 skia-flutter-autoroll@skia.org Roll Skia from b9b208f11c67 to 4e31906b6312 (1 revision) (flutter/engine#54226) 2024-07-30 jonahwilliams@google.com [engine] Split encode and submit into two different surface frame callbacks. (flutter/engine#54200) 2024-07-30 matej.knopp@gmail.com Do not disable partial repaint based on thread merging state (flutter/engine#54219) 2024-07-30 skia-flutter-autoroll@skia.org Roll Dart SDK from 14b51d32e3a6 to e16dc217b1ac (1 revision) (flutter/engine#54221) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC jacksongardner@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Currently we force full repaint when thread merging is detected, but that is not a good way to determine whether platform view is in hierarchy when thread merging is no longer needed. Alternative solution here makes the PlatformViewLayer force full repaint when diffing.
Pre-launch Checklist
///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.