diff options
author | clayjohn <claynjohn@gmail.com> | 2023-07-07 09:06:02 +0200 |
---|---|---|
committer | clayjohn <claynjohn@gmail.com> | 2023-07-07 10:19:28 +0200 |
commit | df021b5063897eb4fe4a716aefc7096209ed29c6 (patch) | |
tree | 263ec4a6def27d32f739f52331dec16dc2d04faf /drivers/vulkan | |
parent | 9d089fe6e501e4818fed1b0688631c4d65d1ba35 (diff) | |
download | redot-engine-df021b5063897eb4fe4a716aefc7096209ed29c6.tar.gz |
Avoid freeze when interacting with menus on Wayland by re-aquiring next swapchain image after updating swapchain
Diffstat (limited to 'drivers/vulkan')
-rw-r--r-- | drivers/vulkan/vulkan_context.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/vulkan/vulkan_context.cpp b/drivers/vulkan/vulkan_context.cpp index 3feed2b109..7c52447e44 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 { |