From fcdfe03674e7ebfda43e27ca160dc01d691dea0a Mon Sep 17 00:00:00 2001 From: kylon <3252255+kylon@users.noreply.github.com> Date: Sun, 27 Jul 2025 14:01:06 +0200 Subject: [PATCH] renderer_vulkan: remove out of context SDL_Quit call (fixes #1220) (#1248) * renderer_vulkan: remove out of context SDL_Quit call (fixes #1220) SDL_Quit must not be called unless the application must exit or SDL is no longer needed * comment: simplify, forgot init had ref-count --- .../renderer_vulkan/renderer_vulkan.cpp | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index eb3d05650..db1b0f439 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -61,22 +61,23 @@ constexpr static std::array PRESENT_BINDINGS namespace { static bool IsLowRefreshRate() { #ifdef ENABLE_SDL2 - const auto sdl_init_status = SDL_Init(SDL_INIT_VIDEO); - if (sdl_init_status < 0) { - LOG_ERROR(Render_Vulkan, "SDL failed to initialize, unable to check refresh rate"); - } else { - SDL_DisplayMode cur_display_mode; - SDL_GetCurrentDisplayMode(0, &cur_display_mode); // TODO: Multimonitor handling. -OS - const auto cur_refresh_rate = cur_display_mode.refresh_rate; - SDL_Quit(); + if (SDL_Init(SDL_INIT_VIDEO) != 0) { + LOG_ERROR(Render_Vulkan, "SDL video failed to initialize, unable to check refresh rate"); + return false; + } - if (cur_refresh_rate < SCREEN_REFRESH_RATE) { - LOG_WARNING(Render_Vulkan, - "Detected refresh rate lower than the emulated 3DS screen: {}hz. FIFO will " - "be disabled", - cur_refresh_rate); - return true; - } + SDL_DisplayMode cur_display_mode; + SDL_GetCurrentDisplayMode(0, &cur_display_mode); // TODO: Multimonitor handling. -OS + const auto cur_refresh_rate = cur_display_mode.refresh_rate; + + SDL_QuitSubSystem(SDL_INIT_VIDEO); + + if (cur_refresh_rate < SCREEN_REFRESH_RATE) { + LOG_WARNING(Render_Vulkan, + "Detected refresh rate lower than the emulated 3DS screen: {}hz. FIFO will " + "be disabled", + cur_refresh_rate); + return true; } #endif