From ecbee1ff55c0ddcf2f7c735f0a7aa96e74a2bde9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quang=20Ng=C3=B4?= Date: Sat, 18 Jan 2025 13:04:51 +0700 Subject: [PATCH] input: More error checking --- src/sdl_window.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index 153f417c5..89187df69 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -90,12 +90,24 @@ SDLInputEngine::~SDLInputEngine() { } void SDLInputEngine::Init() { - int gamepad_count; - SDL_JoystickID* gamepads = SDL_GetGamepads(&gamepad_count); if (m_gamepad) { SDL_CloseGamepad(m_gamepad); + m_gamepad = nullptr; + } + int gamepad_count; + SDL_JoystickID* gamepads = SDL_GetGamepads(&gamepad_count); + if (!gamepads) { + LOG_ERROR(Input, "Cannot get gamepad list: {}", std::string_view(SDL_GetError())); + return; + } + if (gamepad_count == 0) { + LOG_INFO(Input, "No gamepad found!"); + return; + } + LOG_INFO(Input, "Got {} gamepads. Opening the first one.", gamepad_count); + if (!(m_gamepad = SDL_OpenGamepad(gamepads[0]))) { + LOG_ERROR(Input, "Failed to open gamepad 0: {}", std::string_view(SDL_GetError())); } - m_gamepad = gamepad_count > 0 ? SDL_OpenGamepad(gamepads[0]) : nullptr; if (Config::getIsMotionControlsEnabled()) { if (SDL_SetGamepadSensorEnabled(m_gamepad, SDL_SENSOR_GYRO, true)) { m_gyro_poll_rate = SDL_GetGamepadSensorDataRate(m_gamepad, SDL_SENSOR_GYRO);