From 2a96997e909b92991b8647846963f4e88f349a8f Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Thu, 9 Oct 2025 11:35:17 +0200
Subject: [PATCH] Fixed bug #14173 - Android / SDL_Renderer Vulkan : going
background / foreground produces a black screen. need to recreate the swap
chain + send SDL_EVENT_RENDER_DEVICE_RESET event
---
src/render/vulkan/SDL_render_vulkan.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/render/vulkan/SDL_render_vulkan.c b/src/render/vulkan/SDL_render_vulkan.c
index 18a32f6907066..0793ce4771d15 100644
--- a/src/render/vulkan/SDL_render_vulkan.c
+++ b/src/render/vulkan/SDL_render_vulkan.c
@@ -2467,7 +2467,7 @@ static VkResult VULKAN_CreateWindowSizeDependentResources(SDL_Renderer *renderer
result = VULKAN_CreateSwapChain(renderer, w, h);
if (result != VK_SUCCESS) {
- rendererData->recreateSwapchain = VK_TRUE;
+ rendererData->recreateSwapchain = true;
}
rendererData->viewportDirty = true;
@@ -2517,6 +2517,13 @@ static void VULKAN_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *ev
if (event->type == SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED) {
rendererData->recreateSwapchain = true;
}
+
+#ifdef SDL_PLATFORM_ANDROID
+ // Prevent black screen when app returns from background
+ if (event->type == SDL_EVENT_WINDOW_RESTORED) {
+ VULKAN_HandleDeviceLost(renderer);
+ }
+#endif
}
static bool VULKAN_SupportsBlendMode(SDL_Renderer *renderer, SDL_BlendMode blendMode)