From ad5681c45b90ba7c68757fedcffb60db466fc5ef Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 14 Nov 2025 12:34:17 -0800
Subject: [PATCH] Fixed crash in the vulkan renderer when the window is
minimized
There's more work to do here in other cases where we can't recreate the swap chain, but this fixes the common minimize case.
Fixes https://github.com/libsdl-org/SDL/issues/14434
(cherry picked from commit 0ae3d7b0b0e4f10ef796adcd2f2404604fe642e0)
---
src/render/vulkan/SDL_render_vulkan.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/render/vulkan/SDL_render_vulkan.c b/src/render/vulkan/SDL_render_vulkan.c
index 585550ce643bd..73aec4b034d7d 100644
--- a/src/render/vulkan/SDL_render_vulkan.c
+++ b/src/render/vulkan/SDL_render_vulkan.c
@@ -907,7 +907,7 @@ static void VULKAN_RecordPipelineImageBarrier(VULKAN_RenderData *rendererData, V
static VkResult VULKAN_AcquireNextSwapchainImage(SDL_Renderer *renderer)
{
- VULKAN_RenderData *rendererData = ( VULKAN_RenderData * )renderer->internal;
+ VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal;
VkResult result;
@@ -915,10 +915,12 @@ static VkResult VULKAN_AcquireNextSwapchainImage(SDL_Renderer *renderer)
result = vkAcquireNextImageKHR(rendererData->device, rendererData->swapchain, UINT64_MAX,
rendererData->imageAvailableSemaphores[rendererData->currentCommandBufferIndex], VK_NULL_HANDLE, &rendererData->currentSwapchainImageIndex);
if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_ERROR_SURFACE_LOST_KHR) {
- result = VULKAN_CreateWindowSizeDependentResources(renderer);
+ if (!(renderer->window->flags & SDL_WINDOW_MINIMIZED)) {
+ result = VULKAN_CreateWindowSizeDependentResources(renderer);
+ }
return result;
} else if(result == VK_SUBOPTIMAL_KHR) {
- // Suboptimal, but we can contiue
+ // Suboptimal, but we can continue
} else if (result != VK_SUCCESS) {
SET_ERROR_CODE("vkAcquireNextImageKHR()", result);
return result;