mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-12-10 05:38:49 +00:00
Multiple controllers: Select active controller and set default controller (#3169)
* initial commit - not cleanup yet, not usable with imGUI * Ugly solution to working with ImGUI * Populate the default controller labels * Add remove default button * missing tr calls * edit imgui flag after updating * Refactor * Update sirit
This commit is contained in:
@@ -114,12 +114,31 @@ void SDLInputEngine::Init() {
|
||||
return;
|
||||
}
|
||||
|
||||
LOG_INFO(Input, "Got {} gamepads. Opening the first one.", gamepad_count);
|
||||
m_gamepad = SDL_OpenGamepad(gamepads[0]);
|
||||
int selectedIndex = GamepadSelect::GetIndexfromGUID(gamepads, gamepad_count,
|
||||
GamepadSelect::GetSelectedGamepad());
|
||||
int defaultIndex =
|
||||
GamepadSelect::GetIndexfromGUID(gamepads, gamepad_count, Config::getDefaultControllerID());
|
||||
|
||||
// If user selects a gamepad in the GUI, use that, otherwise try the default
|
||||
if (!m_gamepad) {
|
||||
LOG_ERROR(Input, "Failed to open gamepad 0: {}", SDL_GetError());
|
||||
SDL_free(gamepads);
|
||||
return;
|
||||
if (selectedIndex != -1) {
|
||||
m_gamepad = SDL_OpenGamepad(gamepads[selectedIndex]);
|
||||
LOG_INFO(Input, "Opening gamepad selected in GUI.");
|
||||
} else if (defaultIndex != -1) {
|
||||
m_gamepad = SDL_OpenGamepad(gamepads[defaultIndex]);
|
||||
LOG_INFO(Input, "Opening default gamepad.");
|
||||
} else {
|
||||
m_gamepad = SDL_OpenGamepad(gamepads[0]);
|
||||
LOG_INFO(Input, "Got {} gamepads. Opening the first one.", gamepad_count);
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_gamepad) {
|
||||
if (!m_gamepad) {
|
||||
LOG_ERROR(Input, "Failed to open gamepad: {}", SDL_GetError());
|
||||
SDL_free(gamepads);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
SDL_Joystick* joystick = SDL_GetGamepadJoystick(m_gamepad);
|
||||
@@ -426,6 +445,9 @@ void WindowSDL::WaitEvent() {
|
||||
DebugState.PauseGuestThreads();
|
||||
}
|
||||
break;
|
||||
case SDL_EVENT_CHANGE_CONTROLLER:
|
||||
controller->GetEngine()->Init();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user