Seqid for all sync requests, not just blast
Otherwise, for non-blast (majority of cases) it was possible to have races where core would assume a finishDraw is up-to-date even when a requested draw was still pending. This also refactors the resize request cycle a bit since having seqIds for everything makes it possible. In particular, the optimizations that try to avoid no-op resizes have been modified to use the seqIds directly. Additionally, we can now properly track associated resize -> finishDraw, so its possible to make non-BLAST syncs re-enter WAITING if another change is pending. We don't do this forever, though: only until the sync-group has been marked ready. Also, this no-longer considers "returning config in relayout" to be sufficient for having "reported last config". Instead, only config sent in "resized" is sufficient since that binds the seqId, config, and frames together (where relayout called based-on an outdated config can yield mismatched frames). However, for addWindow and dispatchAppVisibility, this still relies on "returning" the config in relayout. This is facilitated by sending a seqId for both those APIs so that the relayout call will actually relayout. Bug: 385976595 Test: Existing tests + move AE settings from freeform->fullscreen Flag: com.android.window.flags.always_seq_id_layout Change-Id: I91cc3256241c54ee4a49c17f981114e359acba13
Loading
Please register or sign in to comment