From 1c087100b0884fb6c9a6e1064ad907eeeedaa1d4 Mon Sep 17 00:00:00 2001 From: Cancerous Date: Sun, 2 Feb 2020 04:11:23 -0500 Subject: [PATCH] [HID] SDL Input PR merge fixes --- src/xenia/hid/hid_demo.cc | 12 ++++++------ src/xenia/hid/sdl/sdl_input_driver.cc | 3 ++- src/xenia/hid/sdl/sdl_input_driver.h | 3 ++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/xenia/hid/hid_demo.cc b/src/xenia/hid/hid_demo.cc index 74c894b01..7cfd40b41 100644 --- a/src/xenia/hid/hid_demo.cc +++ b/src/xenia/hid/hid_demo.cc @@ -43,33 +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) { 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 c73151c1c..809cb614a 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; } @@ -92,6 +92,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 bfa16c995..393279048 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;