From b3a9c8d83f82a4add89b58fe70bdf439fc429dbe Mon Sep 17 00:00:00 2001 From: Megamouse Date: Tue, 17 Jan 2023 01:28:54 +0100 Subject: [PATCH] input: move config getters to base class --- rpcs3/Emu/Io/PadHandler.cpp | 20 ++++++++++++++++++++ rpcs3/Emu/Io/PadHandler.h | 1 + rpcs3/Input/ds3_pad_handler.cpp | 16 +--------------- rpcs3/Input/ds4_pad_handler.cpp | 16 +--------------- rpcs3/Input/dualsense_pad_handler.cpp | 16 +--------------- rpcs3/Input/sdl_pad_handler.cpp | 16 ++-------------- 6 files changed, 26 insertions(+), 59 deletions(-) diff --git a/rpcs3/Emu/Io/PadHandler.cpp b/rpcs3/Emu/Io/PadHandler.cpp index 9b1b1ff2c5..0e02f1348b 100644 --- a/rpcs3/Emu/Io/PadHandler.cpp +++ b/rpcs3/Emu/Io/PadHandler.cpp @@ -323,6 +323,26 @@ void PadHandlerBase::init_configs() } } +cfg_pad* PadHandlerBase::get_config(const std::string& pad_id) +{ + int index = 0; + + for (uint i = 0; i < MAX_GAMEPADS; i++) + { + if (g_cfg_input.player[i]->handler == m_type) + { + if (g_cfg_input.player[i]->device.to_string() == pad_id) + { + m_pad_configs[index].from_string(g_cfg_input.player[i]->config.to_string()); + return &m_pad_configs[index]; + } + index++; + } + } + + return nullptr; +} + PadHandlerBase::connection PadHandlerBase::get_next_button_press(const std::string& pad_id, const pad_callback& callback, const pad_fail_callback& fail_callback, bool get_blacklist, const std::vector& /*buttons*/) { if (get_blacklist) diff --git a/rpcs3/Emu/Io/PadHandler.h b/rpcs3/Emu/Io/PadHandler.h index ec72cb971d..bc9ed60318 100644 --- a/rpcs3/Emu/Io/PadHandler.h +++ b/rpcs3/Emu/Io/PadHandler.h @@ -229,4 +229,5 @@ protected: virtual void get_mapping(const pad_ensemble& binding); void TranslateButtonPress(const std::shared_ptr& device, u64 keyCode, bool& pressed, u16& val, bool ignore_stick_threshold = false, bool ignore_trigger_threshold = false); void init_configs(); + cfg_pad* get_config(const std::string& pad_id); }; diff --git a/rpcs3/Input/ds3_pad_handler.cpp b/rpcs3/Input/ds3_pad_handler.cpp index 0c8da2b983..14d2bab5a9 100644 --- a/rpcs3/Input/ds3_pad_handler.cpp +++ b/rpcs3/Input/ds3_pad_handler.cpp @@ -130,21 +130,7 @@ void ds3_pad_handler::SetPadData(const std::string& padId, u8 player_id, u8 larg device->large_motor = large_motor; device->small_motor = small_motor; device->player_id = player_id; - - int index = 0; - for (uint i = 0; i < MAX_GAMEPADS; i++) - { - if (g_cfg_input.player[i]->handler == m_type) - { - if (g_cfg_input.player[i]->device.to_string() == padId) - { - m_pad_configs[index].from_string(g_cfg_input.player[i]->config.to_string()); - device->config = &m_pad_configs[index]; - break; - } - index++; - } - } + device->config = get_config(padId); ensure(device->config); device->config->player_led_enabled.set(player_led); diff --git a/rpcs3/Input/ds4_pad_handler.cpp b/rpcs3/Input/ds4_pad_handler.cpp index 7552761ad8..663a7e3c85 100644 --- a/rpcs3/Input/ds4_pad_handler.cpp +++ b/rpcs3/Input/ds4_pad_handler.cpp @@ -205,21 +205,7 @@ void ds4_pad_handler::SetPadData(const std::string& padId, u8 player_id, u8 larg device->large_motor = large_motor; device->small_motor = small_motor; device->player_id = player_id; - - int index = 0; - for (uint i = 0; i < MAX_GAMEPADS; i++) - { - if (g_cfg_input.player[i]->handler == m_type) - { - if (g_cfg_input.player[i]->device.to_string() == padId) - { - m_pad_configs[index].from_string(g_cfg_input.player[i]->config.to_string()); - device->config = &m_pad_configs[index]; - break; - } - index++; - } - } + device->config = get_config(padId); ensure(device->config); diff --git a/rpcs3/Input/dualsense_pad_handler.cpp b/rpcs3/Input/dualsense_pad_handler.cpp index b559b774e9..68bb2d50c0 100644 --- a/rpcs3/Input/dualsense_pad_handler.cpp +++ b/rpcs3/Input/dualsense_pad_handler.cpp @@ -1143,21 +1143,7 @@ void dualsense_pad_handler::SetPadData(const std::string& padId, u8 player_id, u device->large_motor = large_motor; device->small_motor = small_motor; device->player_id = player_id; - - int index = 0; - for (uint i = 0; i < MAX_GAMEPADS; i++) - { - if (g_cfg_input.player[i]->handler == m_type) - { - if (g_cfg_input.player[i]->device.to_string() == padId) - { - m_pad_configs[index].from_string(g_cfg_input.player[i]->config.to_string()); - device->config = &m_pad_configs[index]; - break; - } - index++; - } - } + device->config = get_config(padId); ensure(device->config); device->update_lightbar = true; diff --git a/rpcs3/Input/sdl_pad_handler.cpp b/rpcs3/Input/sdl_pad_handler.cpp index 0b28f38606..8716066d16 100644 --- a/rpcs3/Input/sdl_pad_handler.cpp +++ b/rpcs3/Input/sdl_pad_handler.cpp @@ -443,21 +443,9 @@ void sdl_pad_handler::SetPadData(const std::string& padId, u8 player_id, u8 larg return; dev->player_id = player_id; + dev->config = get_config(padId); - int index = 0; - for (uint i = 0; i < MAX_GAMEPADS; i++) - { - if (g_cfg_input.player[i]->handler == m_type) - { - if (g_cfg_input.player[i]->device.to_string() == padId) - { - m_pad_configs[index].from_string(g_cfg_input.player[i]->config.to_string()); - device->config = &m_pad_configs[index]; - break; - } - index++; - } - } + ensure(dev->config); set_rumble(dev, large_motor, small_motor);