diff --git a/plugins/onepad/GamePad.cpp b/plugins/onepad/GamePad.cpp index f4362b8f02c33..f29bd151bb71b 100644 --- a/plugins/onepad/GamePad.cpp +++ b/plugins/onepad/GamePad.cpp @@ -25,7 +25,7 @@ void GamePad::EnumerateGamePads(std::vector> &vgamePad) **/ void GamePad::DoRumble(unsigned type, unsigned pad) { - int index = uid_to_index(g_conf.get_joy_uid(pad)); + int index = uid_to_index(pad); if (index >= 0) s_vgamePad[index]->Rumble(type, pad); } @@ -38,8 +38,10 @@ size_t GamePad::index_to_uid(int index) return 0; } -int GamePad::uid_to_index(size_t uid) +int GamePad::uid_to_index(int pad) { + size_t uid = g_conf.get_joy_uid(pad); + for (int i = 0; i < (int)s_vgamePad.size(); ++i) { if (s_vgamePad[i]->GetUniqueIdentifier() == uid) return i; @@ -47,7 +49,7 @@ int GamePad::uid_to_index(size_t uid) // Current uid wasn't found maybe the pad was unplugged // Fallback to the first pad which more friendly than nothing - if (!s_vgamePad.empty()) + if (!s_vgamePad.empty() && pad == 0) return 0; return -1; diff --git a/plugins/onepad/GamePad.h b/plugins/onepad/GamePad.h index 6a03eb6162114..b9731dc2ac77f 100644 --- a/plugins/onepad/GamePad.h +++ b/plugins/onepad/GamePad.h @@ -59,7 +59,7 @@ class GamePad virtual size_t GetUniqueIdentifier() = 0; static size_t index_to_uid(int index); - static int uid_to_index(size_t uid); + static int uid_to_index(int pad); bool IsProperlyInitialized() { diff --git a/plugins/onepad/Linux/GamepadConfiguration.cpp b/plugins/onepad/Linux/GamepadConfiguration.cpp index a6dc77974c114..01c5419ef5e33 100644 --- a/plugins/onepad/Linux/GamepadConfiguration.cpp +++ b/plugins/onepad/Linux/GamepadConfiguration.cpp @@ -244,7 +244,7 @@ void GamepadConfiguration::repopulate() tmp = g_conf.get_sensibility(); m_sl_joystick_sensibility->SetValue(tmp); - u32 joyid = GamePad::uid_to_index(g_conf.get_joy_uid(m_pad_id)); + u32 joyid = GamePad::uid_to_index(m_pad_id); if (joyid < m_joy_map->GetCount() && !m_joy_map->IsEmpty()) m_joy_map->SetSelection(joyid); diff --git a/plugins/onepad/Linux/linux.cpp b/plugins/onepad/Linux/linux.cpp index 0b6a27b0d337a..2ec910fabb765 100644 --- a/plugins/onepad/Linux/linux.cpp +++ b/plugins/onepad/Linux/linux.cpp @@ -80,7 +80,7 @@ void _PADclose() void PollForJoystickInput(int cpad) { - int index = GamePad::uid_to_index(g_conf.get_joy_uid(cpad)); + int index = GamePad::uid_to_index(cpad); if (index < 0) return;