mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-10 12:30:11 +01:00
vulkan/wsi/x11: Destroy Present event context when destroying swapchain
Without this, the X server may accumulate stale Present event contexts if a client creates and destroys multiple swapchains using the same window. v2: Based on Chris Wilson's review: * Use xcb_present_select_input_checked so that protocol errors generated by old X servers can be handled gracefully * Use xcb_discard_reply() instead of free(xcb_request_check()) v3: Rebased on top of this code having been refactored out of anv Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
2ea021a1eb
commit
550cd272b4
1 changed files with 6 additions and 0 deletions
|
|
@ -891,6 +891,8 @@ x11_swapchain_destroy(struct wsi_swapchain *anv_chain,
|
|||
const VkAllocationCallbacks *pAllocator)
|
||||
{
|
||||
struct x11_swapchain *chain = (struct x11_swapchain *)anv_chain;
|
||||
xcb_void_cookie_t cookie;
|
||||
|
||||
for (uint32_t i = 0; i < chain->image_count; i++)
|
||||
x11_image_finish(chain, pAllocator, &chain->images[i]);
|
||||
|
||||
|
|
@ -904,6 +906,10 @@ x11_swapchain_destroy(struct wsi_swapchain *anv_chain,
|
|||
}
|
||||
|
||||
xcb_unregister_for_special_event(chain->conn, chain->special_event);
|
||||
cookie = xcb_present_select_input_checked(chain->conn, chain->event_id,
|
||||
chain->window,
|
||||
XCB_PRESENT_EVENT_MASK_NO_EVENT);
|
||||
xcb_discard_reply(chain->conn, cookie.sequence);
|
||||
|
||||
vk_free(pAllocator, chain);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue