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

(cherry picked from commit 2a96997e90)
This commit is contained in:
Sylvain
2025-10-09 11:35:17 +02:00
committed by Sam Lantinga
parent 78756540cb
commit 988714beb9

View File

@@ -2503,7 +2503,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;
@@ -2553,6 +2553,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)