diff --git a/src/xenia/hid/hid_demo.cc b/src/xenia/hid/hid_demo.cc index 1829d2b47..e343c2dae 100644 --- a/src/xenia/hid/hid_demo.cc +++ b/src/xenia/hid/hid_demo.cc @@ -53,33 +53,33 @@ std::vector> CreateInputDrivers( drivers.emplace_back(xe::hid::nop::Create(window)); } else if (cvars::hid.compare("sdl") == 0) { auto driver = xe::hid::sdl::Create(window); - if (XSUCCEEDED(driver->Setup())) { + if (XSUCCEEDED(driver->Setup(drivers))) { drivers.emplace_back(std::move(driver)); } #if XE_PLATFORM_WIN32 } else if (cvars::hid.compare("winkey") == 0) { auto driver = xe::hid::winkey::Create(window); - if (XSUCCEEDED(driver->Setup())) { + if (XSUCCEEDED(driver->Setup(drivers))) { drivers.emplace_back(std::move(driver)); } } else if (cvars::hid.compare("xinput") == 0) { auto driver = xe::hid::xinput::Create(window); - if (XSUCCEEDED(driver->Setup())) { + if (XSUCCEEDED(driver->Setup(drivers))) { drivers.emplace_back(std::move(driver)); } #endif // XE_PLATFORM_WIN32 } else { auto sdl_driver = xe::hid::sdl::Create(window); - if (sdl_driver && XSUCCEEDED(sdl_driver->Setup())) { + if (sdl_driver && XSUCCEEDED(sdl_driver->Setup(drivers))) { drivers.emplace_back(std::move(sdl_driver)); } #if XE_PLATFORM_WIN32 auto xinput_driver = xe::hid::xinput::Create(window); - if (xinput_driver && XSUCCEEDED(xinput_driver->Setup())) { + if (xinput_driver && XSUCCEEDED(xinput_driver->Setup(drivers))) { drivers.emplace_back(std::move(xinput_driver)); } auto winkey_driver = xe::hid::winkey::Create(window); - if (winkey_driver && XSUCCEEDED(winkey_driver->Setup())) { + if (winkey_driver && XSUCCEEDED(winkey_driver->Setup(drivers))) { drivers.emplace_back(std::move(winkey_driver)); } #endif // XE_PLATFORM_WIN32 diff --git a/src/xenia/hid/sdl/sdl_input_driver.cc b/src/xenia/hid/sdl/sdl_input_driver.cc index 470892588..a4c5ffc4e 100644 --- a/src/xenia/hid/sdl/sdl_input_driver.cc +++ b/src/xenia/hid/sdl/sdl_input_driver.cc @@ -58,7 +58,7 @@ SDLInputDriver::~SDLInputDriver() { } } -X_STATUS SDLInputDriver::Setup() { +X_STATUS SDLInputDriver::Setup(std::vector>& drivers) { if (!TestSDLVersion()) { return X_STATUS_UNSUCCESSFUL; } @@ -102,6 +102,7 @@ X_STATUS SDLInputDriver::Setup() { } switch (type) { case SDL_CONTROLLERDEVICEADDED: + case SDL_JOYDEVICEADDED: driver->OnControllerDeviceAdded(event); break; case SDL_CONTROLLERDEVICEREMOVED: diff --git a/src/xenia/hid/sdl/sdl_input_driver.h b/src/xenia/hid/sdl/sdl_input_driver.h index 84555f70d..d108115b2 100644 --- a/src/xenia/hid/sdl/sdl_input_driver.h +++ b/src/xenia/hid/sdl/sdl_input_driver.h @@ -32,7 +32,8 @@ class SDLInputDriver : public InputDriver { explicit SDLInputDriver(xe::ui::Window* window); ~SDLInputDriver() override; - X_STATUS Setup() override; + X_STATUS Setup( + std::vector>& drivers) override; X_RESULT GetCapabilities(uint32_t user_index, uint32_t flags, X_INPUT_CAPABILITIES* out_caps) override;