diff --git a/src/hid_core/resource_manager.cpp b/src/hid_core/resource_manager.cpp index d0cb098d85..62fec03b1a 100644 --- a/src/hid_core/resource_manager.cpp +++ b/src/hid_core/resource_manager.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/hid_core/resources/debug_pad/debug_pad.cpp b/src/hid_core/resources/debug_pad/debug_pad.cpp index bab49b55f8..1102dad6c9 100644 --- a/src/hid_core/resources/debug_pad/debug_pad.cpp +++ b/src/hid_core/resources/debug_pad/debug_pad.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/hid_core/resources/digitizer/digitizer.cpp b/src/hid_core/resources/digitizer/digitizer.cpp index e158e55e6c..5d7dcadfe3 100644 --- a/src/hid_core/resources/digitizer/digitizer.cpp +++ b/src/hid_core/resources/digitizer/digitizer.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/hid_core/resources/keyboard/keyboard.cpp b/src/hid_core/resources/keyboard/keyboard.cpp index 4e929e1260..340e8a65ce 100644 --- a/src/hid_core/resources/keyboard/keyboard.cpp +++ b/src/hid_core/resources/keyboard/keyboard.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/hid_core/resources/mouse/debug_mouse.cpp b/src/hid_core/resources/mouse/debug_mouse.cpp index e56c1de656..5f6f6e8e1a 100644 --- a/src/hid_core/resources/mouse/debug_mouse.cpp +++ b/src/hid_core/resources/mouse/debug_mouse.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/hid_core/resources/mouse/mouse.cpp b/src/hid_core/resources/mouse/mouse.cpp index 80de81efe4..53a8938a1b 100644 --- a/src/hid_core/resources/mouse/mouse.cpp +++ b/src/hid_core/resources/mouse/mouse.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/hid_core/resources/six_axis/console_six_axis.cpp b/src/hid_core/resources/six_axis/console_six_axis.cpp index c58c14e453..4f733cc76f 100644 --- a/src/hid_core/resources/six_axis/console_six_axis.cpp +++ b/src/hid_core/resources/six_axis/console_six_axis.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/hid_core/resources/six_axis/six_axis.cpp b/src/hid_core/resources/six_axis/six_axis.cpp index abda9e8e09..b407a5c76e 100644 --- a/src/hid_core/resources/six_axis/six_axis.cpp +++ b/src/hid_core/resources/six_axis/six_axis.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/hid_core/resources/system_buttons/capture_button.cpp b/src/hid_core/resources/system_buttons/capture_button.cpp index 417d384e6b..95eb604241 100644 --- a/src/hid_core/resources/system_buttons/capture_button.cpp +++ b/src/hid_core/resources/system_buttons/capture_button.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/hid_core/resources/system_buttons/home_button.cpp b/src/hid_core/resources/system_buttons/home_button.cpp index b0131767af..f665338f32 100644 --- a/src/hid_core/resources/system_buttons/home_button.cpp +++ b/src/hid_core/resources/system_buttons/home_button.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/hid_core/resources/system_buttons/sleep_button.cpp b/src/hid_core/resources/system_buttons/sleep_button.cpp index 21e78e2d44..1596632465 100644 --- a/src/hid_core/resources/system_buttons/sleep_button.cpp +++ b/src/hid_core/resources/system_buttons/sleep_button.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/input_common/drivers/joycon.cpp b/src/input_common/drivers/joycon.cpp index ea95693a1c..fb2d75e384 100644 --- a/src/input_common/drivers/joycon.cpp +++ b/src/input_common/drivers/joycon.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project @@ -23,14 +23,12 @@ Joycons::Joycons(const std::string& input_engine_) : InputEngine(input_engine_) return; } LOG_INFO(Input, "Joycon driver Initialization started"); -#if SDL_VERSION_ATLEAST(2, 26, 4) - int const res = SDL_hid_init(); - if (res == 0) { + const int init_res = SDL_hid_init(); + if (init_res == 0) { Setup(); } else { - LOG_ERROR(Input, "Hidapi could not be initialized. failed with error = {}", res); + LOG_ERROR(Input, "Hidapi could not be initialized. failed with error = {}", init_res); } -#endif } Joycons::~Joycons() { @@ -57,9 +55,7 @@ void Joycons::Reset() { } device->Stop(); } -#if SDL_VERSION_ATLEAST(2, 26, 4) SDL_hid_exit(); -#endif } void Joycons::Setup() { @@ -84,9 +80,9 @@ void Joycons::Setup() { } void Joycons::ScanThread(std::stop_token stop_token) { -#if SDL_VERSION_ATLEAST(2, 26, 4) constexpr u16 nintendo_vendor_id = 0x057e; Common::SetCurrentThreadName("JoyconScanThread"); + do { SDL_hid_device_info* devs = SDL_hid_enumerate(nintendo_vendor_id, 0x0); SDL_hid_device_info* cur_dev = devs; @@ -102,7 +98,6 @@ void Joycons::ScanThread(std::stop_token stop_token) { SDL_hid_free_enumeration(devs); } while (Common::StoppableTimedWait(stop_token, std::chrono::seconds{5})); -#endif } bool Joycons::IsDeviceNew(SDL_hid_device_info* device_info) const { diff --git a/src/input_common/drivers/joycon.h b/src/input_common/drivers/joycon.h index 189fe1b846..112e970e15 100644 --- a/src/input_common/drivers/joycon.h +++ b/src/input_common/drivers/joycon.h @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -9,14 +6,7 @@ #include #include #include - -#include -#if SDL_VERSION_ATLEAST(2, 26, 4) -# include -#else -struct SDL_hid_device; -struct SDL_hid_device_info; -#endif +#include #include "input_common/input_engine.h" diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp index b7a81d5975..ddee11035c 100644 --- a/src/input_common/drivers/sdl_driver.cpp +++ b/src/input_common/drivers/sdl_driver.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2018 Citra Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -42,7 +42,6 @@ public: } void EnableMotion() { -#if SDL_VERSION_ATLEAST(2, 26, 4) if (!sdl_controller) { return; } @@ -59,14 +58,12 @@ public: if (has_gyro) { SDL_GameControllerSetSensorEnabled(controller, SDL_SENSOR_GYRO, SDL_TRUE); } -#endif } bool HasMotion() const { return has_gyro || has_accel; } -#if SDL_VERSION_ATLEAST(2, 26, 4) bool UpdateMotion(SDL_ControllerSensorEvent event) { constexpr float gravity_constant = 9.80665f; std::scoped_lock lock{mutex}; @@ -108,7 +105,6 @@ public: motion.delta_timestamp = time_difference * 1000; return true; } -#endif const BasicMotion& GetMotion() const { return motion; @@ -153,15 +149,13 @@ public: } bool HasHDRumble() const { -#if SDL_VERSION_ATLEAST(2, 26, 4) if (sdl_controller) { - auto const type = SDL_GameControllerGetType(sdl_controller.get()); + const auto type = SDL_GameControllerGetType(sdl_controller.get()); return (type == SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO) || (type == SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT) || (type == SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT) || (type == SDL_CONTROLLER_TYPE_PS5); } -#endif return false; } @@ -258,21 +252,26 @@ public: } std::string GetControllerName() const { -#if SDL_VERSION_ATLEAST(2, 26, 4) if (sdl_controller) { switch (SDL_GameControllerGetType(sdl_controller.get())) { - case SDL_CONTROLLER_TYPE_XBOX360: return "Xbox 360 Controller"; - case SDL_CONTROLLER_TYPE_XBOXONE: return "Xbox One Controller"; - case SDL_CONTROLLER_TYPE_PS3: return "DualShock 3 Controller"; - case SDL_CONTROLLER_TYPE_PS4: return "DualShock 4 Controller"; - case SDL_CONTROLLER_TYPE_PS5: return "DualSense Controller"; + case SDL_CONTROLLER_TYPE_XBOX360: + return "Xbox 360 Controller"; + case SDL_CONTROLLER_TYPE_XBOXONE: + return "Xbox One Controller"; + case SDL_CONTROLLER_TYPE_PS3: + return "DualShock 3 Controller"; + case SDL_CONTROLLER_TYPE_PS4: + return "DualShock 4 Controller"; + case SDL_CONTROLLER_TYPE_PS5: + return "DualSense Controller"; default: - if (auto const name = SDL_GameControllerName(sdl_controller.get()); name) - return name; break; } + const auto name = SDL_GameControllerName(sdl_controller.get()); + if (name) { + return name; + } } -#endif if (sdl_joystick) { const auto name = SDL_JoystickName(sdl_joystick.get()); @@ -457,7 +456,6 @@ void SDLDriver::HandleGameControllerEvent(const SDL_Event& event) { } break; } -#if SDL_VERSION_ATLEAST(2, 26, 4) case SDL_CONTROLLERSENSORUPDATE: { if (auto joystick = GetSDLJoystickBySDLID(event.csensor.which)) { if (joystick->UpdateMotion(event.csensor)) { @@ -474,7 +472,6 @@ void SDLDriver::HandleGameControllerEvent(const SDL_Event& event) { } break; } -#endif case SDL_JOYDEVICEREMOVED: LOG_DEBUG(Input, "Controller removed with Instance_ID {}", event.jdevice.which); CloseJoystick(SDL_JoystickFromInstanceID(event.jdevice.which)); @@ -492,7 +489,6 @@ void SDLDriver::CloseJoysticks() { } SDLDriver::SDLDriver(std::string input_engine_) : InputEngine(std::move(input_engine_)) { -#if SDL_VERSION_ATLEAST(2, 26, 4) // Set our application name. Currently passed to DBus by SDL and visible to the user through // their desktop environment. SDL_SetHint(SDL_HINT_APP_NAME, "Eden"); @@ -533,7 +529,6 @@ SDLDriver::SDLDriver(std::string input_engine_) : InputEngine(std::move(input_en // Disable hidapi driver for xbox. Already default on Windows, this causes conflict with native // driver on Linux. SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_XBOX, "0"); -#endif // If the frontend is going to manage the event loop, then we don't start one here start_thread = SDL_WasInit(SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER) == 0; @@ -838,7 +833,6 @@ ButtonBindings SDLDriver::GetDefaultButtonBinding( auto slr_button = SDL_CONTROLLER_BUTTON_LEFTSHOULDER; auto srr_button = SDL_CONTROLLER_BUTTON_RIGHTSHOULDER; -#if SDL_VERSION_ATLEAST(2, 26, 4) if (joystick->IsJoyconLeft()) { sll_button = SDL_CONTROLLER_BUTTON_PADDLE2; srl_button = SDL_CONTROLLER_BUTTON_PADDLE4; @@ -847,7 +841,6 @@ ButtonBindings SDLDriver::GetDefaultButtonBinding( slr_button = SDL_CONTROLLER_BUTTON_PADDLE3; srr_button = SDL_CONTROLLER_BUTTON_PADDLE1; } -#endif return { std::pair{Settings::NativeButton::A, SDL_CONTROLLER_BUTTON_B}, @@ -869,9 +862,7 @@ ButtonBindings SDLDriver::GetDefaultButtonBinding( {Settings::NativeButton::SLRight, slr_button}, {Settings::NativeButton::SRRight, srr_button}, {Settings::NativeButton::Home, SDL_CONTROLLER_BUTTON_GUIDE}, -#if SDL_VERSION_ATLEAST(2, 26, 4) {Settings::NativeButton::Screenshot, SDL_CONTROLLER_BUTTON_MISC1}, -#endif }; } diff --git a/src/input_common/helpers/joycon_driver.cpp b/src/input_common/helpers/joycon_driver.cpp index 867ecb7465..0dd1c958a2 100644 --- a/src/input_common/helpers/joycon_driver.cpp +++ b/src/input_common/helpers/joycon_driver.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -41,8 +38,8 @@ Common::Input::DriverResult JoyconDriver::RequestDeviceAccess(SDL_hid_device_inf return Common::Input::DriverResult::UnsupportedControllerType; } -#if SDL_VERSION_ATLEAST(2, 26, 4) - hidapi_handle->handle = SDL_hid_open(device_info->vendor_id, device_info->product_id, device_info->serial_number); + hidapi_handle->handle = + SDL_hid_open(device_info->vendor_id, device_info->product_id, device_info->serial_number); std::memcpy(&handle_serial_number, device_info->serial_number, 15); if (!hidapi_handle->handle) { LOG_ERROR(Input, "Yuzu can't gain access to this device: ID {:04X}:{:04X}.", @@ -51,9 +48,6 @@ Common::Input::DriverResult JoyconDriver::RequestDeviceAccess(SDL_hid_device_inf } SDL_hid_set_nonblocking(hidapi_handle->handle, 1); return Common::Input::DriverResult::Success; -#else - return Common::Input::DriverResult::UnsupportedControllerType; -#endif } Common::Input::DriverResult JoyconDriver::InitializeDevice() { @@ -144,6 +138,8 @@ void JoyconDriver::InputThread(std::stop_token stop_token) { Common::SetCurrentThreadName("JoyconInput"); input_thread_running = true; + // Max update rate is 5ms, ensure we are always able to read a bit faster + constexpr int ThreadDelay = 3; std::vector buffer(MaxBufferSize); while (!stop_token.stop_requested()) { @@ -154,17 +150,14 @@ void JoyconDriver::InputThread(std::stop_token stop_token) { continue; } -#if SDL_VERSION_ATLEAST(2, 26, 4) - // Max update rate is 5ms, ensure we are always able to read a bit faster - int constexpr thread_delay = 3; // By disabling the input thread we can ensure custom commands will succeed as no package is // skipped if (!disable_input_thread) { - status = SDL_hid_read_timeout(hidapi_handle->handle, buffer.data(), buffer.size(), thread_delay); + status = SDL_hid_read_timeout(hidapi_handle->handle, buffer.data(), buffer.size(), + ThreadDelay); } else { - std::this_thread::sleep_for(std::chrono::milliseconds(thread_delay)); + std::this_thread::sleep_for(std::chrono::milliseconds(ThreadDelay)); } -#endif if (IsPayloadCorrect(status, buffer)) { OnNewData(buffer); @@ -697,18 +690,19 @@ void JoyconDriver::SetCallbacks(const JoyconCallbacks& callbacks) { joycon_poller->SetCallbacks(callbacks); } -Common::Input::DriverResult JoyconDriver::GetDeviceType(SDL_hid_device_info* device_info, ControllerType& controller_type) { -#if SDL_VERSION_ATLEAST(2, 26, 4) +Common::Input::DriverResult JoyconDriver::GetDeviceType(SDL_hid_device_info* device_info, + ControllerType& controller_type) { static constexpr std::array, 6> supported_devices{ std::pair{0x2006, ControllerType::Left}, {0x2007, ControllerType::Right}, {0x2009, ControllerType::Pro}, }; - constexpr u16 nintendo_vendor_id = 0x057e; + controller_type = ControllerType::None; - if (device_info->vendor_id != nintendo_vendor_id) + if (device_info->vendor_id != nintendo_vendor_id) { return Common::Input::DriverResult::UnsupportedControllerType; + } for (const auto& [product_id, type] : supported_devices) { if (device_info->product_id == static_cast(product_id)) { @@ -716,20 +710,16 @@ Common::Input::DriverResult JoyconDriver::GetDeviceType(SDL_hid_device_info* dev return Common::Input::DriverResult::Success; } } -#endif return Common::Input::DriverResult::UnsupportedControllerType; } -Common::Input::DriverResult JoyconDriver::GetSerialNumber(SDL_hid_device_info* device_info, SerialNumber& serial_number) { -#if SDL_VERSION_ATLEAST(2, 26, 4) +Common::Input::DriverResult JoyconDriver::GetSerialNumber(SDL_hid_device_info* device_info, + SerialNumber& serial_number) { if (device_info->serial_number == nullptr) { return Common::Input::DriverResult::Unknown; } std::memcpy(&serial_number, device_info->serial_number, 15); return Common::Input::DriverResult::Success; -#else - return Common::Input::DriverResult::Unknown; -#endif } } // namespace InputCommon::Joycon diff --git a/src/input_common/helpers/joycon_protocol/common_protocol.cpp b/src/input_common/helpers/joycon_protocol/common_protocol.cpp index fc6281938a..a6eecf9802 100644 --- a/src/input_common/helpers/joycon_protocol/common_protocol.cpp +++ b/src/input_common/helpers/joycon_protocol/common_protocol.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -18,15 +15,11 @@ u8 JoyconCommonProtocol::GetCounter() { } void JoyconCommonProtocol::SetBlocking() { -#if SDL_VERSION_ATLEAST(2, 26, 4) SDL_hid_set_nonblocking(hidapi_handle->handle, 0); -#endif } void JoyconCommonProtocol::SetNonBlocking() { -#if SDL_VERSION_ATLEAST(2, 26, 4) SDL_hid_set_nonblocking(hidapi_handle->handle, 1); -#endif } Common::Input::DriverResult JoyconCommonProtocol::GetDeviceType(ControllerType& controller_type) { @@ -42,23 +35,26 @@ Common::Input::DriverResult JoyconCommonProtocol::GetDeviceType(ControllerType& return result; } -Common::Input::DriverResult JoyconCommonProtocol::CheckDeviceAccess(SDL_hid_device_info* device_info) { +Common::Input::DriverResult JoyconCommonProtocol::CheckDeviceAccess( + SDL_hid_device_info* device_info) { ControllerType controller_type{ControllerType::None}; const auto result = GetDeviceType(controller_type); + if (result != Common::Input::DriverResult::Success || controller_type == ControllerType::None) { return Common::Input::DriverResult::UnsupportedControllerType; } -#if SDL_VERSION_ATLEAST(2, 26, 4) - hidapi_handle->handle = SDL_hid_open(device_info->vendor_id, device_info->product_id, device_info->serial_number); + + hidapi_handle->handle = + SDL_hid_open(device_info->vendor_id, device_info->product_id, device_info->serial_number); + if (!hidapi_handle->handle) { - LOG_ERROR(Input, "Yuzu can't gain access to this device: ID {:04X}:{:04X}.", device_info->vendor_id, device_info->product_id); + LOG_ERROR(Input, "Yuzu can't gain access to this device: ID {:04X}:{:04X}.", + device_info->vendor_id, device_info->product_id); return Common::Input::DriverResult::HandleInUse; } + SetNonBlocking(); return Common::Input::DriverResult::Success; -#else - return Common::Input::DriverResult::UnsupportedControllerType; -#endif } Common::Input::DriverResult JoyconCommonProtocol::SetReportMode(ReportMode report_mode) { @@ -67,21 +63,21 @@ Common::Input::DriverResult JoyconCommonProtocol::SetReportMode(ReportMode repor } Common::Input::DriverResult JoyconCommonProtocol::SendRawData(std::span buffer) { -#if SDL_VERSION_ATLEAST(2, 26, 4) - auto const result = SDL_hid_write(hidapi_handle->handle, buffer.data(), buffer.size()); - if (result == -1) + const auto result = SDL_hid_write(hidapi_handle->handle, buffer.data(), buffer.size()); + + if (result == -1) { return Common::Input::DriverResult::ErrorWritingData; + } + return Common::Input::DriverResult::Success; -#else - return Common::Input::DriverResult::ErrorWritingData; -#endif } -Common::Input::DriverResult JoyconCommonProtocol::GetSubCommandResponse(SubCommand sc, SubCommandResponse& output) { -#if SDL_VERSION_ATLEAST(2, 26, 4) +Common::Input::DriverResult JoyconCommonProtocol::GetSubCommandResponse( + SubCommand sc, SubCommandResponse& output) { constexpr int timeout_mili = 66; constexpr int MaxTries = 10; int tries = 0; + do { int result = SDL_hid_read_timeout(hidapi_handle->handle, reinterpret_cast(&output), sizeof(SubCommandResponse), timeout_mili); @@ -92,8 +88,9 @@ Common::Input::DriverResult JoyconCommonProtocol::GetSubCommandResponse(SubComma if (tries++ > MaxTries) { return Common::Input::DriverResult::Timeout; } - } while (output.input_report.report_mode != ReportMode::SUBCMD_REPLY && output.sub_command != sc); -#endif + } while (output.input_report.report_mode != ReportMode::SUBCMD_REPLY && + output.sub_command != sc); + return Common::Input::DriverResult::Success; } @@ -221,11 +218,12 @@ Common::Input::DriverResult JoyconCommonProtocol::ConfigureMCU(const MCUConfig& return result; } -Common::Input::DriverResult JoyconCommonProtocol::GetMCUDataResponse(ReportMode report_mode, MCUCommandResponse& output) { -#if SDL_VERSION_ATLEAST(2, 26, 4) +Common::Input::DriverResult JoyconCommonProtocol::GetMCUDataResponse(ReportMode report_mode, + MCUCommandResponse& output) { constexpr int TimeoutMili = 200; constexpr int MaxTries = 9; int tries = 0; + do { int result = SDL_hid_read_timeout(hidapi_handle->handle, reinterpret_cast(&output), sizeof(MCUCommandResponse), TimeoutMili); @@ -236,8 +234,9 @@ Common::Input::DriverResult JoyconCommonProtocol::GetMCUDataResponse(ReportMode if (tries++ > MaxTries) { return Common::Input::DriverResult::Timeout; } - } while (output.input_report.report_mode != report_mode || output.mcu_report == MCUReport::EmptyAwaitingCmd); -#endif + } while (output.input_report.report_mode != report_mode || + output.mcu_report == MCUReport::EmptyAwaitingCmd); + return Common::Input::DriverResult::Success; } diff --git a/src/input_common/helpers/joycon_protocol/joycon_types.h b/src/input_common/helpers/joycon_protocol/joycon_types.h index acac627097..792f124e14 100644 --- a/src/input_common/helpers/joycon_protocol/joycon_types.h +++ b/src/input_common/helpers/joycon_protocol/joycon_types.h @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -13,14 +10,7 @@ #include #include - -#include -#if SDL_VERSION_ATLEAST(2, 26, 4) -# include -#else -struct SDL_hid_device; -struct SDL_hid_device_info; -#endif +#include #include "common/bit_field.h" #include "common/common_funcs.h"