diff --git a/src/xenia/hid/hid_demo.cc b/src/xenia/hid/hid_demo.cc index 8fa9f19f6..4140137da 100644 --- a/src/xenia/hid/hid_demo.cc +++ b/src/xenia/hid/hid_demo.cc @@ -43,27 +43,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) { - drivers.emplace_back(xe::hid::winkey::Create(window)); + auto driver = xe::hid::winkey::Create(window); + if (XSUCCEEDED(driver->Setup(drivers))) { + drivers.emplace_back(std::move(driver)); + } } else if (cvars::hid.compare("xinput") == 0) { - drivers.emplace_back(xe::hid::xinput::Create(window)); + auto driver = xe::hid::xinput::Create(window); + 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) { + 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) { + 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 4406c72a5..5e48217d8 100644 --- a/src/xenia/hid/sdl/sdl_input_driver.cc +++ b/src/xenia/hid/sdl/sdl_input_driver.cc @@ -51,7 +51,7 @@ SDLInputDriver::~SDLInputDriver() { } } -X_STATUS SDLInputDriver::Setup() { +X_STATUS SDLInputDriver::Setup(std::vector>& drivers) { if (!TestSDLVersion()) { return X_STATUS_UNSUCCESSFUL; } diff --git a/src/xenia/hid/sdl/sdl_input_driver.h b/src/xenia/hid/sdl/sdl_input_driver.h index 5621eadec..fc9fa0b34 100644 --- a/src/xenia/hid/sdl/sdl_input_driver.h +++ b/src/xenia/hid/sdl/sdl_input_driver.h @@ -29,7 +29,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;