sdl: don't rely on event to get window size when processing resize event

window size may be different from drawable size if high-dpi is enabled.
Fixes wayland resize with scale factor > 100%.
This commit is contained in:
Flyinghead 2023-02-05 11:30:23 +01:00
parent d9c08bd081
commit 0b6c09da02
1 changed files with 7 additions and 16 deletions

View File

@ -292,26 +292,17 @@ void input_sdl_handle()
|| event.window.event == SDL_WINDOWEVENT_MINIMIZED || event.window.event == SDL_WINDOWEVENT_MINIMIZED
|| event.window.event == SDL_WINDOWEVENT_MAXIMIZED) || event.window.event == SDL_WINDOWEVENT_MAXIMIZED)
{ {
if (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED
&& event.window.data1 != 0 && event.window.data2 != 0)
{
settings.display.width = event.window.data1;
settings.display.height = event.window.data2;
}
else
{
#ifdef USE_VULKAN #ifdef USE_VULKAN
if (windowFlags & SDL_WINDOW_VULKAN) if (windowFlags & SDL_WINDOW_VULKAN)
SDL_Vulkan_GetDrawableSize(window, &settings.display.width, &settings.display.height); SDL_Vulkan_GetDrawableSize(window, &settings.display.width, &settings.display.height);
else else
#endif #endif
#ifdef USE_OPENGL #ifdef USE_OPENGL
if (windowFlags & SDL_WINDOW_OPENGL) if (windowFlags & SDL_WINDOW_OPENGL)
SDL_GL_GetDrawableSize(window, &settings.display.width, &settings.display.height); SDL_GL_GetDrawableSize(window, &settings.display.width, &settings.display.height);
else else
#endif #endif
SDL_GetWindowSize(window, &settings.display.width, &settings.display.height); SDL_GetWindowSize(window, &settings.display.width, &settings.display.height);
}
GraphicsContext::Instance()->resize(); GraphicsContext::Instance()->resize();
} }
else if (event.window.event == SDL_WINDOWEVENT_FOCUS_GAINED) else if (event.window.event == SDL_WINDOWEVENT_FOCUS_GAINED)