diff --git a/game/graphics/pipelines/opengl.cpp b/game/graphics/pipelines/opengl.cpp index 3a8c0289e8..c9582dd7f1 100644 --- a/game/graphics/pipelines/opengl.cpp +++ b/game/graphics/pipelines/opengl.cpp @@ -377,6 +377,14 @@ GLDisplay::~GLDisplay() { // Cleanup SDL SDL_GL_DestroyContext(m_gl_context); SDL_DestroyWindow(m_window); + // cleanup SDL related sub-systems before we quit SDL + if (m_display_manager) { + m_display_manager.reset(); + } + if (m_input_manager) { + m_input_manager.reset(); + } + // now quit SDL SDL_Quit(); if (m_main) { gl_exit(); diff --git a/game/system/hid/devices/game_controller.cpp b/game/system/hid/devices/game_controller.cpp index 2bad7bee69..987d70c129 100644 --- a/game/system/hid/devices/game_controller.cpp +++ b/game/system/hid/devices/game_controller.cpp @@ -253,6 +253,7 @@ void GameController::close_device() { if (m_device_handle) { clear_trigger_effect(dualsense_effects::TriggerEffectOption::BOTH); SDL_CloseGamepad(m_device_handle); + m_device_handle = NULL; } }