aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCameron Kumar <[email protected]>2018-06-01 12:16:19 +0100
committerAlex Smith <[email protected]>2018-06-08 14:06:46 +0100
commitcb03803253b026d5f4c1e0fef431a12df461e6d8 (patch)
tree595fde24c942a651fa17ecffed94efaa5eed3084
parentce64c1b70aa8e5618e7dbe8e6dc8ef83676afb06 (diff)
vulkan/wsi: Destroy swapchain images after terminating FIFO queues
The queue_manager thread can access the images from x11_present_to_x11, hence this reorder prevents dereferencing of dangling pointers. Cc: "18.1" <[email protected]> Fixes: e73d136a023080 ("vulkan/wsi/x11: Implement FIFO mode.") Reviewed-by: Lionel Landwerlin <[email protected]>
-rw-r--r--src/vulkan/wsi/wsi_common_x11.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c
index 1bfbc7c3001..20d7cf5a2c8 100644
--- a/src/vulkan/wsi/wsi_common_x11.c
+++ b/src/vulkan/wsi/wsi_common_x11.c
@@ -1235,9 +1235,6 @@ x11_swapchain_destroy(struct wsi_swapchain *anv_chain,
struct x11_swapchain *chain = (struct x11_swapchain *)anv_chain;
xcb_void_cookie_t cookie;
- for (uint32_t i = 0; i < chain->base.image_count; i++)
- x11_image_finish(chain, pAllocator, &chain->images[i]);
-
if (chain->threaded) {
chain->status = VK_ERROR_OUT_OF_DATE_KHR;
/* Push a UINT32_MAX to wake up the manager */
@@ -1247,6 +1244,9 @@ x11_swapchain_destroy(struct wsi_swapchain *anv_chain,
wsi_queue_destroy(&chain->present_queue);
}
+ for (uint32_t i = 0; i < chain->base.image_count; i++)
+ x11_image_finish(chain, pAllocator, &chain->images[i]);
+
xcb_unregister_for_special_event(chain->conn, chain->special_event);
cookie = xcb_present_select_input_checked(chain->conn, chain->event_id,
chain->window,