The FIFO thread signals shutdown by pushing UINT32_MAX into the acquire queue, and shutdown is signaled to it by pushing UINT32_MAX into the present queue.
Explicitly catch a push of UINT32_MAX in either direction and treat this as error. Signed-off-by: Daniel Stone <dani...@collabora.com> --- src/vulkan/wsi/wsi_common_x11.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c index e84572810d3..dadada82ef1 100644 --- a/src/vulkan/wsi/wsi_common_x11.c +++ b/src/vulkan/wsi/wsi_common_x11.c @@ -832,7 +832,7 @@ x11_acquire_next_image_from_queue(struct x11_swapchain *chain, VkResult result = wsi_queue_pull(&chain->acquire_queue, &image_index, timeout); /* On error, the thread has shut down, so safe to update chain->status */ - if (result < 0) + if (result < 0 || image_index == UINT32_MAX) return x11_swapchain_result(chain, result); assert(image_index < chain->base.image_count); @@ -938,7 +938,7 @@ x11_manage_fifo_queues(void *state) result = wsi_queue_pull(&chain->present_queue, &image_index, INT64_MAX); if (result < 0) { goto fail; - } else if (chain->status < 0) { + } else if (chain->status < 0 || image_index == UINT32_MAX) { /* The status can change underneath us if the swapchain is destroyed * from another thread. */ -- 2.14.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev