diff --git a/src/core/system.cpp b/src/core/system.cpp index 8a075bfe9..d59e12894 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -28,7 +28,7 @@ void Init(EmuWindow* emu_window) { } void Shutdown() { - //InputCommon::Shutdown(); + InputCommon::Shutdown(); VideoCore::Shutdown(); HLE::Shutdown(); Kernel::Shutdown(); diff --git a/src/input_common/input_common.cpp b/src/input_common/input_common.cpp index d0af6ea39..afd4291e1 100644 --- a/src/input_common/input_common.cpp +++ b/src/input_common/input_common.cpp @@ -3,7 +3,10 @@ // Refer to the license.txt file included. #include "input_common/input_common.h" -#include "input_common/sdl_input/sdl_input.h" + +#ifdef _SDL_H + #include "input_common/sdl_input/sdl_input.h" +#endif #include "core/core_timing.h" #include "core/settings.h" @@ -19,11 +22,11 @@ static int input_event; //Ticks for CoreTiming event, same as VBlank in GPU static u64 frame_ticks; -///Callback for CoreTiming +/// Callback for CoreTiming static void InputCallback(u64 userdata, int cycles_late) { //Call user input plugin Poll() - if(g_user_input != nullptr) { + if (g_user_input != nullptr) { g_user_input->Poll(); } @@ -35,17 +38,18 @@ std::string ControllerBase::GetDeviceName() const { return device_name; } - const Service::HID::PadState ControllerBase::GetPadState() const { return controller.pad_state; } void Init(ControllerBackends backend) { - switch(backend) { - //SDL2 backend selected - case SDL2_JOY: - g_user_input = new SDLController(); - break; + switch (backend) { + #ifdef _SDL_H + //SDL2 backend selected + case SDL2_JOY: + g_user_input = new SDLController(); + break; + #endif //No backend selected case NO_JOY: @@ -57,8 +61,8 @@ void Init(ControllerBackends backend) { } //Shutdown immediately if backend failed to initialize - if((g_user_input != nullptr) && (!g_user_input->activated)) { - ShutDown(); + if (g_user_input != nullptr && !g_user_input->activated) { + Shutdown(); return; } @@ -69,8 +73,8 @@ void Init(ControllerBackends backend) { CoreTiming::ScheduleEvent(frame_ticks, input_event); } -void ShutDown() { - if((g_user_input != nullptr) +void Shutdown() { + if (g_user_input != nullptr) { delete g_user_input; g_user_input = nullptr; } diff --git a/src/input_common/input_common.h b/src/input_common/input_common.h index aab75267f..05f5d9617 100644 --- a/src/input_common/input_common.h +++ b/src/input_common/input_common.h @@ -9,7 +9,7 @@ namespace InputCommon { -///Enum defining available backends +/// Enum defining available backends enum ControllerBackends { NO_JOY, SDL2_JOY @@ -20,43 +20,41 @@ public: ControllerBase() {} virtual ~ControllerBase() {} - ///Initializes input based on specific backends + /// Initializes input based on specific backends virtual bool Init() = 0; - ///Grabs a list of devices supported by the backend + /// Grabs a list of devices supported by the backend virtual void DiscoverDevices() = 0; - ///Grab and process input + /// Grab and process input virtual void Poll() = 0; - ///Shuts down all backend related data - virtual void ShutDown() = 0; + /// Shuts down all backend related data + virtual void Shutdown() = 0; - ///Returns internal name of currently selected device. Expose this to the UI + /// Returns internal name of currently selected device. Expose this to the UI std::string GetDeviceName() const; - ///Returns internal pad state - const Service::HID::PadState GetPadState() const; + /// Returns internal pad state + const Service::HID::PadState GetPadState() const; bool activated; protected: - ///Internal name of currently selected device + /// Internal name of currently selected device std::string device_name; - ///Internal view this specific object will have of 3DS input states + /// Internal view this specific object will have of 3DS input states ControllerState controller; }; -///Initialize the user input system +/// Initialize the user input system void Init(ControllerBackends backend); -///Deactive the user input system -void ShutDown(); +/// Deactive the user input system +void Shutdown(); -///InputCommon 'plugin' +/// InputCommon 'plugin' extern ControllerBase* g_user_input; } // namespace - - diff --git a/src/input_common/sdl_input/sdl_input.cpp b/src/input_common/sdl_input/sdl_input.cpp index 298c41011..a837bca1d 100644 --- a/src/input_common/sdl_input/sdl_input.cpp +++ b/src/input_common/sdl_input/sdl_input.cpp @@ -22,13 +22,13 @@ SDLController::SDLController() { } SDLController::~SDLController() { - ShutDown(); + Shutdown(); } bool SDLController::Init() { //Attempt to initialize SDL with joystick only - if(SDL_Init(SDL_INIT_JOYSTICK) != 0) { + if (SDL_Init(SDL_INIT_JOYSTICK) != 0) { return false; } @@ -36,7 +36,7 @@ bool SDLController::Init() { //TODO - Use DiscoverDevice to generate a list of available joysticks, then open the correct index jpad = SDL_JoystickOpen(index); - if(jpad == nullptr) { + if (jpad == nullptr) { return false; } @@ -55,17 +55,17 @@ bool SDLController::Init() { void SDLController::DiscoverDevices() {} -void SDLController::ShutDown() { +void SDLController::Shutdown() { //Attempt to close joystick with SDL - if(jpad != nullptr) { + if (jpad != nullptr) { SDL_JoystickClose(jpad); } } void SDLController::Poll() { - if(SDL_PollEvent(&input_event)) { - if((input_event.type == SDL_JOYBUTTONDOWN) || (input_event.type == SDL_JOYBUTTONUP) - || (input_event.type == SDL_JOYAXISMOTION) || (input_event.type == SDL_JOYHATMOTION)) { + if (SDL_PollEvent(&input_event)) { + if (input_event.type == SDL_JOYBUTTONDOWN || input_event.type == SDL_JOYBUTTONUP + || input_event.type == SDL_JOYAXISMOTION || input_event.type == SDL_JOYHATMOTION) { ProcessInput(); } } @@ -77,12 +77,12 @@ void SDLController::ProcessInput() { int val = 0; //Generate the id based on input from an event - switch(input_event.type) { + switch (input_event.type) { //Joystick button press events case SDL_JOYBUTTONDOWN: pad_id = 100; pad_id += input_event.jbutton.button; - + controller.pad_state.hex |= KeyMap::GetPadKey({pad_id, joypad_id}).hex; break; @@ -100,19 +100,19 @@ void SDLController::ProcessInput() { pad_id += (input_event.jaxis.axis * 2); val = input_event.jaxis.value; - if(val > 0) { + if (val > 0) { pad_id += 1; } //If analog input is beyond dead zone, set it - if(CheckDeadZone(val)) { + if (CheckDeadZone(val)) { controller.pad_state.hex |= KeyMap::GetPadKey({pad_id, joypad_id}).hex; } else { controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id, joypad_id}).hex; } //Release opposite axis - if(pad_id % 2 == 0) { + if (pad_id % 2 == 0) { controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+1, joypad_id}).hex; } else { controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id-1, joypad_id}).hex; @@ -125,7 +125,7 @@ void SDLController::ProcessInput() { pad_id = 300; pad_id += input_event.jhat.hat * 4; - switch(input_event.jhat.value) { + switch (input_event.jhat.value) { case SDL_HAT_CENTERED: controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+1, joypad_id}).hex; @@ -154,35 +154,35 @@ void SDLController::ProcessInput() { controller.pad_state.hex |= KeyMap::GetPadKey({pad_id+3, joypad_id}).hex; break; - case SDL_HAT_RIGHT: + case SDL_HAT_RIGHT: controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id, joypad_id}).hex; controller.pad_state.hex |= KeyMap::GetPadKey({pad_id+1, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+2, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+3, joypad_id}).hex; break; - case SDL_HAT_RIGHTUP: + case SDL_HAT_RIGHTUP: controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id, joypad_id}).hex; controller.pad_state.hex |= KeyMap::GetPadKey({pad_id+1, joypad_id}).hex; controller.pad_state.hex |= KeyMap::GetPadKey({pad_id+2, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+3, joypad_id}).hex; break; - case SDL_HAT_RIGHTDOWN: + case SDL_HAT_RIGHTDOWN: controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id, joypad_id}).hex; controller.pad_state.hex |= KeyMap::GetPadKey({pad_id+1, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+2, joypad_id}).hex; controller.pad_state.hex |= KeyMap::GetPadKey({pad_id+3, joypad_id}).hex; break; - case SDL_HAT_UP: + case SDL_HAT_UP: controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+1, joypad_id}).hex; controller.pad_state.hex |= KeyMap::GetPadKey({pad_id+2, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+3, joypad_id}).hex; break; - case SDL_HAT_DOWN: + case SDL_HAT_DOWN: controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+1, joypad_id}).hex; controller.pad_state.hex &= ~KeyMap::GetPadKey({pad_id+2, joypad_id}).hex; @@ -228,9 +228,9 @@ void SDLController::SetDeadZone(int range) { } bool SDLController::CheckDeadZone(int range) { - if((range < -dead_zone) || (range > dead_zone)) { + if ((range < -dead_zone) || (range > dead_zone)) { return true; - } else if((range > -dead_zone) && (range < dead_zone)) { + } else if ((range > -dead_zone) && (range < dead_zone)) { return false; } } diff --git a/src/input_common/sdl_input/sdl_input.h b/src/input_common/sdl_input/sdl_input.h index 73ea627db..32db3aaa3 100644 --- a/src/input_common/sdl_input/sdl_input.h +++ b/src/input_common/sdl_input/sdl_input.h @@ -10,50 +10,48 @@ namespace InputCommon { -class SDLController : virtual public ControllerBase { +class SDLController final : public ControllerBase { public: SDLController(); ~SDLController(); - ///Initializes input via SDL2 - bool Init(); + /// Initializes input via SDL2 + bool Init() override; - ///Grabs a list of devices supported by the backend - void DiscoverDevices(); + /// Grabs a list of devices supported by the backend + void DiscoverDevices() override; - ///Grab and process input via SDL2 - void Poll(); + /// Grab and process input via SDL2 + void Poll() override; - ///Shuts down all joysticks opened by SDL2 - void ShutDown(); + /// Shuts down all joysticks opened by SDL2 + void Shutdown() override; - ///Processes input when polling + /// Processes input when polling void ProcessInput(); - ///Sets up keymaps from input configuration + /// Sets up keymaps from input configuration void SetupKeyMaps(); - ///Sets analog deadzones + /// Sets analog deadzones void SetDeadZone(int range); - ///Checks if analog input is within the dead zone + /// Checks if analog input is within the dead zone bool CheckDeadZone(int range); private: SDL_Joystick* jpad; - ///SDL event used for polling + /// SDL event used for polling SDL_Event input_event; - ///Index of joystick, used for opening/closing a joystick + /// Index of joystick, used for opening/closing a joystick int index; - ///Keymap id for this controller + /// Keymap id for this controller int joypad_id; int dead_zone; }; } //namespace - -