Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 704de8ca authored by Evan Rosky's avatar Evan Rosky
Browse files

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
parent e8378edc
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment