From 149fce547f64fa4087355df107bb521e28057d24 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 29 May 2026 14:33:44 -0700 Subject: [PATCH] Send SDL_EVENT_WINDOW_EXPOSED when the GPU renderer swap chain is resized In this case the current frame being rendered doesn't match the swapchain size and the application should re-render the frame. Fixes https://github.com/libsdl-org/SDL/issues/15550 (cherry picked from commit 2b0df96f2582da19eb201a63d1692c8df6ac4df5) --- src/render/gpu/SDL_render_gpu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/render/gpu/SDL_render_gpu.c b/src/render/gpu/SDL_render_gpu.c index 7b15e4adc0..f8ab103c3c 100644 --- a/src/render/gpu/SDL_render_gpu.c +++ b/src/render/gpu/SDL_render_gpu.c @@ -22,6 +22,7 @@ #ifdef SDL_VIDEO_RENDER_GPU +#include "../../events/SDL_windowevents_c.h" #include "../../video/SDL_pixels_c.h" #include "../SDL_d3dmath.h" #include "../SDL_sysrender.h" @@ -1501,6 +1502,9 @@ static bool GPU_RenderPresent(SDL_Renderer *renderer) if (swapchain_texture_width != data->backbuffer.width || swapchain_texture_height != data->backbuffer.height) { CreateBackbuffer(data, swapchain_texture_width, swapchain_texture_height, SDL_GetGPUSwapchainTextureFormat(data->device, renderer->window)); + + // Notify the application that it needs to redraw this frame + SDL_SendWindowEvent(renderer->window, SDL_EVENT_WINDOW_EXPOSED, 0, 0); } } else { SDL_SubmitGPUCommandBuffer(data->state.command_buffer);