summaryrefslogtreecommitdiffstats
path: root/drivers/vulkan
diff options
context:
space:
mode:
authorclayjohn <claynjohn@gmail.com>2023-07-07 09:06:02 +0200
committerclayjohn <claynjohn@gmail.com>2023-07-07 10:19:28 +0200
commitdf021b5063897eb4fe4a716aefc7096209ed29c6 (patch)
tree263ec4a6def27d32f739f52331dec16dc2d04faf /drivers/vulkan
parent9d089fe6e501e4818fed1b0688631c4d65d1ba35 (diff)
downloadredot-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.cpp8
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 {