| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
Migrates over warnings as errors for input common to match how the
common library treats warnings as errors.
|
|
|
|
|
|
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).
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
Makes the input_common code warnings consistent with the rest of the
codebase.
|
|
|
|
|
|
These maps can be constexpr arrays of std::pair.
|
|
Avoids redundant copies.
|
|
Avoids churning ParamPackage instances.
|
|
We need to add the 'f' suffix to make the right hand side a float and
not a double.
|
|
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.
|
|
This doesn't modify internal member state, so it can be marked as const.
|
|
|
|
The hardware tested value is 0.5 which translates to SHRT_MAX / 2
|
|
|
|
Co-authored-by: James Rowe <jroweboy@gmail.com>
Co-authored-by: Its-Rei <kupfel@gmail.com>
|
|
This PR is now only the Analog devices handling the range value defaulting at 100%
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
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.
|
|
Places the documentation comments with the rest of SDLState's member
function documentation.
|
|
Adds another underscore to clearly indicate the axis names.
|
|
Make it explicit that these aren't modified elsewhere (either through
functions by reference, or by other operations).
|
|
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.
|
|
It's valid to static_cast a void pointer back into its proper type.
|
|
Same behavior, but without a potential need to unnecessarily default
construct a value.
|
|
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.
|
|
Silences the final two warnings in SDL code.
|
|
Gets rid of a few unnecessary inclusion dependencies. It also uncovered
a few indirect inclusion dependencies being relied upon.
|
|
|
|
Makes the conversions explicit, as opposed to implicit.
|
|
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.
|
|
In both cases, we weren't actually returning anything, which is
undefined behavior.
|
|
Just makes the definitions a little bit more tidy.
|
|
We don't need to universally capture by reference. We specifically just
need to capture the this pointer.
|
|
Specifying the time unit itself is sufficient here.
|
|
|
|
|
|
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
|
|
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
|
|
This should make reviewing much easier as you can then see what changed
happened between the old file and the new one
|
|
* 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
|
|
Avoids unnecessary atomic reference count increments and decrements
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|