mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2025-01-31 03:45:38 +00:00
Vulkan: Fix crash when drag-resizing window
This commit is contained in:
parent
82a0ad8a10
commit
1455e793d5
|
@ -411,12 +411,8 @@ void SwapChain::DestroySwapChain()
|
|||
|
||||
VkResult SwapChain::AcquireNextImage()
|
||||
{
|
||||
VkResult res = vkAcquireNextImageKHR(g_vulkan_context->GetDevice(), m_swap_chain, UINT64_MAX,
|
||||
m_image_available_semaphore, VK_NULL_HANDLE, &m_current_image);
|
||||
if (res != VK_SUCCESS && res != VK_ERROR_OUT_OF_DATE_KHR && res != VK_SUBOPTIMAL_KHR)
|
||||
LOG_VULKAN_ERROR(res, "vkAcquireNextImageKHR failed: ");
|
||||
|
||||
return res;
|
||||
return vkAcquireNextImageKHR(g_vulkan_context->GetDevice(), m_swap_chain, UINT64_MAX, m_image_available_semaphore,
|
||||
VK_NULL_HANDLE, &m_current_image);
|
||||
}
|
||||
|
||||
bool SwapChain::ResizeSwapChain(u32 new_width /* = 0 */, u32 new_height /* = 0 */)
|
||||
|
|
|
@ -380,9 +380,13 @@ bool VulkanHostDisplay::BeginRender()
|
|||
res = m_swap_chain->AcquireNextImage();
|
||||
}
|
||||
|
||||
if (res != VK_SUCCESS)
|
||||
// This can happen when multiple resize events happen in quick succession.
|
||||
// In this case, just wait until the next frame to try again.
|
||||
if (res != VK_SUCCESS && res != VK_SUBOPTIMAL_KHR)
|
||||
{
|
||||
Panic("Failed to acquire swap chain image");
|
||||
// Still submit the command buffer, otherwise we'll end up with several frames waiting.
|
||||
LOG_VULKAN_ERROR(res, "vkAcquireNextImageKHR() failed: ");
|
||||
g_vulkan_context->ExecuteCommandBuffer(false);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue