diff options
author | bunnei <bunneidev@gmail.com> | 2022-05-28 09:55:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-28 09:55:53 +0200 |
commit | d879741ec6e6396331965dc2683d3de0d8b3880f (patch) | |
tree | 049fb06784cc394ca40e3981d6286b23eb8f386b /src/input_common/drivers/sdl_driver.h | |
parent | Merge pull request #8372 from german77/touch (diff) | |
parent | input_common: Make vibration request async (diff) | |
download | yuzu-d879741ec6e6396331965dc2683d3de0d8b3880f.tar yuzu-d879741ec6e6396331965dc2683d3de0d8b3880f.tar.gz yuzu-d879741ec6e6396331965dc2683d3de0d8b3880f.tar.bz2 yuzu-d879741ec6e6396331965dc2683d3de0d8b3880f.tar.lz yuzu-d879741ec6e6396331965dc2683d3de0d8b3880f.tar.xz yuzu-d879741ec6e6396331965dc2683d3de0d8b3880f.tar.zst yuzu-d879741ec6e6396331965dc2683d3de0d8b3880f.zip |
Diffstat (limited to '')
-rw-r--r-- | src/input_common/drivers/sdl_driver.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/input_common/drivers/sdl_driver.h b/src/input_common/drivers/sdl_driver.h index dcd0d1e64..c82632506 100644 --- a/src/input_common/drivers/sdl_driver.h +++ b/src/input_common/drivers/sdl_driver.h @@ -12,6 +12,7 @@ #include <SDL.h> #include "common/common_types.h" +#include "common/threadsafe_queue.h" #include "input_common/input_engine.h" union SDL_Event; @@ -64,12 +65,20 @@ public: const PadIdentifier& identifier, const Common::Input::VibrationStatus& vibration) override; private: + struct VibrationRequest { + PadIdentifier identifier; + Common::Input::VibrationStatus vibration; + }; + void InitJoystick(int joystick_index); void CloseJoystick(SDL_Joystick* sdl_joystick); /// Needs to be called before SDL_QuitSubSystem. void CloseJoysticks(); + /// Takes all vibrations from the queue and sends the command to the controller + void SendVibrations(); + Common::ParamPackage BuildAnalogParamPackageForButton(int port, std::string guid, s32 axis, float value = 0.1f) const; Common::ParamPackage BuildButtonParamPackageForButton(int port, std::string guid, @@ -107,6 +116,9 @@ private: /// Returns true if the button is on the left joycon bool IsButtonOnLeftSide(Settings::NativeButton::Values button) const; + /// Queue of vibration request to controllers + Common::SPSCQueue<VibrationRequest> vibration_queue; + /// Map of GUID of a list of corresponding virtual Joysticks std::unordered_map<std::string, std::vector<std::shared_ptr<SDLJoystick>>> joystick_map; std::mutex joystick_map_mutex; |