If the underlying X11 window gets destroyed, the event we're waiting for may never be delivered, in which case xcb_wait_for_special_event would hang indefinitely. Solution: 1. Use xcb_poll_for_special_event to check if an event has arrived yet. 2. If not, Wait up to ~1s for XCB's file descriptor to become readable; if it does, go back to step 1. 3. If the file descriptor didn't become readable, make a round-trip to the X server to check that the window still exists. Go back to step 1 if it does, otherwise bail. Also add an early bail-out when it's known that the window was destroyed. Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/116 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5368> |
||
|---|---|---|
| .. | ||
| Android.mk | ||
| loader.c | ||
| loader.h | ||
| loader_dri3_helper.c | ||
| loader_dri3_helper.h | ||
| Makefile.sources | ||
| meson.build | ||
| pci_id_driver_map.c | ||
| pci_id_driver_map.h | ||
| SConscript | ||