summaryrefslogtreecommitdiffstats
path: root/src/input_common/sdl (unfollow)
Commit message (Collapse)AuthorFilesLines
2020-11-16sdl_impl: Pump SDL Events at 1000 HzMorph1-1/+1
2020-11-16sdl_impl: Revert to the "old" method of mapping sticksMorph1-32/+13
Not all controllers have a SDL_GameController binding. This caused controllers not present in the SDL GameController database to have buttons mapped instead of axes. Furthermore, it was not possible to invert the axes when it could be useful such as emulating a horizontal single joycon or other potential cases. This allows us to invert the axes by reversing the order of mapping (vertical, then horizontal).
2020-11-16controllers/npad: Remove the old vibration filterMorph1-15/+0
Previously we used a vibration filter that filters out amplitudes close to each other. It turns out there are cases where this results into vibrations that are too inaccurate. Remove this and move the 100Hz vibration filter (Only allowing a maximum of 100 vibrations per second) from sdl_impl to npad when enable_accurate_vibrations is set to false.
2020-11-16input_common: Add VibrationDevice and VibrationDeviceFactoryMorph2-16/+60
A vibration device is an input device that returns an unsigned byte as status. It represents whether the vibration device supports vibration or not. If the status returns 1, it supports vibration. Otherwise, it does not support vibration.
2020-11-16controllers/npad: Add heuristics to reduce rumble state changesMorph1-29/+25
Sending too many state changes in a short period of time can cause massive performance issues. As a result, we have to use several heuristics to reduce the number of state changes to minimize/eliminate this performance impact while maintaining the quality of these vibrations as much as possible.
2020-10-21sdl_impl: Fix controller reconnection issuesMorph1-85/+84
It turns out that after a controller is disconnected, there is a chance that events from the previous controller are sent/processed after it has been disconnected. This causes the previously disconnected controller to reappear as connected due to GetSDLJoystickBySDLID() emplacing this controller back to the map. Fix this by only returning an SDLJoystick if and only if it exists in the map.
2020-10-16sdl_impl: Erase the SDLJoystick entry after removing a controllerMorph1-15/+13
Previously, disconnecting a controller still leaves a null SDLJoystick entry within the vector of SDLJoysticks mapped by GUID. When a DirectInput device of the same GUID is reconnected, it adds that device to a new port causing non-detectable input. Furthermore, opening the "Configure" menu would cause yuzu to crash since it first tries to resolve the name of a null SDLJoystick entry that was not removed. Resolve this by properly erasing the SDLJoystick entry from the vector.
2020-10-16input_common/CMakeLists: Make some warnings errorsLioncash1-37/+40
Makes the input_common code warnings consistent with the rest of the codebase.
2020-09-29First implementation of controller rumblegerman1-1/+38
2020-09-26Add random motion input to SDLgerman2-0/+192
2020-08-29sdl_impl: Reduce allocations in GetButtonMappingForDevice()Lioncash1-31/+37
These maps can be constexpr arrays of std::pair.
2020-08-29sdl_impl: Make use of std::move on std::string where applicableLioncash1-3/+3
Avoids redundant copies.
2020-08-29sdl_impl: Make use of insert_or_assign() where applicableLioncash1-14/+18
Avoids churning ParamPackage instances.
2020-08-29sdl_impl: Prevent type truncation in BuildAnalogParamPackageForButton() default argumentsLioncash1-1/+1
We need to add the 'f' suffix to make the right hand side a float and not a double.
2020-08-29sdl_impl: Simplify make_tuple callLioncash1-1/+1
The purpose of make_tuple is that you don't need to explicitly type out the types of the things that comprise said tuple. Given this just returns default values, we can simplify this a bit.
2020-08-29sdl_impl: Mark FromEvent() as a const member functionLioncash1-2/+2
This doesn't modify internal member state, so it can be marked as const.
2020-08-29input_common/main: Remove unnecessary headersLioncash1-1/+1
2020-08-26input_common: Fix directional deadzone valuesMorph1-1/+1
The hardware tested value is 0.5 which translates to SHRT_MAX / 2
2020-08-26Address feedbackMorph1-32/+20
2020-08-26Project Mjölnir: Part 1Morph3-94/+336
Co-authored-by: James Rowe <jroweboy@gmail.com> Co-authored-by: Its-Rei <kupfel@gmail.com>
2020-08-10Remove UI changesameerj1-1/+1
This PR is now only the Analog devices handling the range value defaulting at 100%
2020-08-10undo unnecessary newlines, slider range 50-150Ameer1-1/+1
2020-08-10Add range slider for analog sticksAmeer1-11/+14
2020-07-02Fix unnecessary diffsAmeer1-1/+0
2020-06-21Cleanup after linterAmeer1-36/+16
2020-06-21GC Adapter ImplementationAmeer1-16/+37
2020-04-16CMakeLists: Specify -Wextra on linux buildsLioncash1-0/+1
Allows reporting more cases where logic errors may exist, such as implicit fallthrough cases, etc. We currently ignore unused parameters, since we currently have many cases where this is intentional (virtual interfaces). While we're at it, we can also tidy up any existing code that causes warnings. This also uncovered a few bugs as well.
2020-01-15Moved analog direction logic to sdl_implCJBok1-0/+16
2019-06-03input_common/sdl/sdl_impl: Correct logging string in SDLState constructorLioncash1-1/+1
If this path was ever taken, a runtime exception would occur due to the lack of a formatting specifier to insert the error code into the format string.
2019-06-03input_common/sdl/sdl_impl: Move documentation comments to header where applicableLioncash2-7/+6
Places the documentation comments with the rest of SDLState's member function documentation.
2019-06-03input_common/sdl/sdl_impl: Amend names for axes for SDLAnalogPollerLioncash1-13/+13
Adds another underscore to clearly indicate the axis names.
2019-06-03input_common/sdl/sdl_impl: Mark variables const where applicableLioncash1-10/+11
Make it explicit that these aren't modified elsewhere (either through functions by reference, or by other operations).
2019-06-03input_common/sdl/sdl_impl: Mark SDLEventToButtonParamPackage() as staticLioncash1-1/+1
Its prototype declared at the top of the translation unit contains the static qualifier, so the function itself should also contain it to make it a proper internally linked function.
2019-06-03input_common/sdl/sdl_impl: Convert reinterpret_cast into a static_castLioncash1-2/+4
It's valid to static_cast a void pointer back into its proper type.
2019-06-03input_common/sdl/sdl_impl: Use insert_or_assign() where applicableLioncash1-3/+3
Same behavior, but without a potential need to unnecessarily default construct a value.
2019-06-03input_common/sdl/sdl_impl: Simplify SDL_Joystick deleter handlingLioncash1-15/+14
The deleter can just be set in the constructor and maintained throughout the lifetime of the object. If a contained pointer is null, then the deleter won't execute, so this is safe to do. We don't need to swap it out with a version of a deleter that does nothing.
2019-06-03input_common/sdl/sdl_impl: Resolve two sign conversion warningsLioncash1-10/+16
Silences the final two warnings in SDL code.
2019-06-03input_common/sdl: Remove unused header includes and forward declarationsLioncash3-11/+5
Gets rid of a few unnecessary inclusion dependencies. It also uncovered a few indirect inclusion dependencies being relied upon.
2019-06-03input_common/sdl/sdl_impl: Use nested namespace specifiers where applicableLioncash1-5/+2
2019-05-31input_common/sdl/sdl_impl: Silence sign conversion warningsLioncash1-3/+3
Makes the conversions explicit, as opposed to implicit.
2019-04-01general: Use deducation guides for std::lock_guard and std::unique_lockLioncash1-12/+14
Since C++17, the introduction of deduction guides for locking facilities means that we no longer need to hardcode the mutex type into the locks themselves, making it easier to switch mutex types, should it ever be necessary in the future.
2019-03-18input_common/sdl: Correct return values within implementations of GetPollers()Lioncash2-2/+6
In both cases, we weren't actually returning anything, which is undefined behavior.
2019-03-18input_common/sdl: Use a type alias to shorten declaration of GetPollersLioncash3-11/+9
Just makes the definitions a little bit more tidy.
2019-03-17input_common/sdl_impl: Make lambda capture more specific in SDLState constructorLioncash1-1/+1
We don't need to universally capture by reference. We specifically just need to capture the this pointer.
2019-03-17input_common/sdl_impl: Remove unnecessary std::chrono::duration constructionLioncash1-1/+1
Specifying the time unit itself is sufficient here.
2019-03-17input_common/sdl_impl: Remove unused variable in SDLState constructorLioncash1-1/+0
2019-03-02fixup! Joystick: Allow for background events; Add deadzone to SDLAnalogB3n301-6/+17
2019-03-02input/sdl: lock map mutex after SDL callWeiyi Wang1-11/+17
Any SDL invocation can call the even callback on the same thread, which can call GetSDLJoystickBySDLID and eventually cause double lock on joystick_map_mutex. To avoid this, lock guard should be placed as closer as possible to the object accessing code, so that any SDL invocation is with the mutex unlocked
2019-03-02Input: Remove global variables from SDL InputJames Rowe4-773/+188
Changes the interface as well to remove any unique methods that frontends needed to call such as StartJoystickEventHandler by conditionally starting the polling thread only if the frontend hasn't started it already. Additionally, moves all global state into a single SDLState class in order to guarantee that the destructors are called in the proper order
2019-03-02Input: Copy current SDL.h/cpp files to implJames Rowe2-0/+680
This should make reviewing much easier as you can then see what changed happened between the old file and the new one
2018-09-11Port #4141 from citra: Joystick hotplug support (#1275)Tobias2-88/+308
* Joystick hotplug support (#4141) * use SDL_PollEvent instead of SDL_JoystickUpdate Register hot plugged controller by GUID if they were configured in a previous session * Move SDL_PollEvent into its own thread * Don't store SDLJoystick pointer in Input Device; Get pointer on each GetStatus call * Fix that joystick_list gets cleared after SDL_Quit * Add VirtualJoystick for InputDevices thats never nullptr * fixup! Add VirtualJoystick for InputDevices thats never nullptr * fixup! fixup! Add VirtualJoystick for InputDevices thats never nullptr * Remove SDL_GameController, make SDL_Joystick* unique_ptr * fixup! Remove SDL_GameController, make SDL_Joystick* unique_ptr * Adressed feedback; fixed handling of same guid reconnects * fixup! Adressed feedback; fixed handling of same guid reconnects * merge the two joystick_lists into one * make SDLJoystick a member of VirtualJoystick * fixup! make SDLJoystick a member of VirtualJoystick * fixup! make SDLJoystick a member of VirtualJoystick * fixup! fixup! make SDLJoystick a member of VirtualJoystick * SDLJoystick: Addressed review comments * Address one missed review comment
2018-08-03input_common: Use std::move where applicableLioncash1-4/+4
Avoids unnecessary atomic reference count increments and decrements
2018-08-03input_common: Add missing override specifiersLioncash1-12/+0
2018-07-03Rename logging macro back to LOG_*James Rowe1-3/+3
2018-04-27input_common: Move old logging macros over to fmt-capable onesLioncash1-3/+3
2018-01-18input_common/sdl: Silence a -Wpessimizing-move warningLioncash1-1/+1
2018-01-16Adding meumart's Citra SDL Joystick support. Citra PR #3116muemart2-1/+205
2017-08-11Fix some spelling mistakesdanzel1-1/+1
2017-04-17input_common/sdl: add support for binding button to axiswwylele1-4/+53
2017-03-01InputCommon: add SDL joystick supportwwylele2-0/+221