From 7447946dd13870fa2c6a116d8e89b6fb312d639c Mon Sep 17 00:00:00 2001 From: clayjohn Date: Fri, 7 Jul 2023 09:06:02 +0200 Subject: [PATCH] Avoid freeze when interacting with menus on Wayland by re-aquiring next swapchain image after updating swapchain (cherry picked from commit df021b5063897eb4fe4a716aefc7096209ed29c6) --- drivers/vulkan/vulkan_context.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/vulkan/vulkan_context.cpp b/drivers/vulkan/vulkan_context.cpp index 3feed2b1095..7c52447e443 100644 --- a/drivers/vulkan/vulkan_context.cpp +++ b/drivers/vulkan/vulkan_context.cpp @@ -1818,7 +1818,7 @@ Error VulkanContext::_update_swap_chain(Window *window) { if (window->width == 0 || window->height == 0) { free(presentModes); // Likely window minimized, no swapchain created. - return OK; + return ERR_SKIP; } // The FIFO present mode is guaranteed by the spec to be supported // and to have no tearing. It's a great default present mode to use. @@ -2275,8 +2275,10 @@ Error VulkanContext::prepare_buffers() { // Swapchain is not as optimal as it could be, but the platform's // presentation engine will still present the image correctly. print_verbose("Vulkan: Early suboptimal swapchain, recreating."); - _update_swap_chain(w); - break; + Error swap_chain_err = _update_swap_chain(w); + if (swap_chain_err == ERR_SKIP) { + break; + } } else if (err != VK_SUCCESS) { ERR_BREAK_MSG(err != VK_SUCCESS, "Vulkan: Did not create swapchain successfully. Error code: " + String(string_VkResult(err))); } else {