Avoid Pixel HWC deadlock on display disconnect #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "display-hotplug"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This changes the AIDL HWC2 compat callback handling so display disconnect hotplug events are delivered from a worker thread instead of directly from the vendor HWC callback stack.
On tegu, the Pixel HWC can emit a hotplug disconnect while holding internal DRM/hotplug state. The libhybris/Mir disconnect path may then re-enter HWC immediately, for example while tearing down display state or disabling vsync, which can deadlock the vendor composer service. Deferring disconnect delivery breaks that synchronous re-entry path.
Connected hotplug events are still delivered synchronously. This is intentional: libhybris/Mir expects the initial primary display to be available before registerCallback() returns. Making connected events async caused startup races like primary display disconnected.