| Age | Commit message (Collapse) | Author |
|
-Fix Add/Remove/Refresh device safety, devices could be added and removed at the same time, causing missing or duplicated devices (rare but possible)
-Fix other devices population race conditions in ControllerInterface
-Avoid re-creating all devices when dolphin is being shut down
-Avoid re-creating devices when the render window handle has changed (just the relevantr ones now)
-Avoid sending Devices Changed events if devices haven't actually changed
-Made most devices populations will be made async, to increase performance and avoid hanging the host or CPU thread on manual devices refresh
|
|
|
|
A "devices changed" callback could have ended up waiting on another thread that was also populating devices
and waiting on the previous thread to release the callbacks mutex.
|
|
Add battery level
|
|
disconnection detection, ...
-Reworked thread waits to never hang the Host thread for more than a really small time
(e.g. when disabling DSU its thread now closes almost immediately)
-Improve robustness when a large amount of devices are connected
-Add devices disconnection detection (they'd stay there forever until manually refreshed)
|
|
controllers queries
that's not the way it's supposed to work
|
|
-add a way to reset their value (from the mappings UI)
-fix "memory leak" where they would never be cleaned,
one would be created every time you wrote a character after a "$"
-fix ability to create variables with an empty string by just writing "$" (+added error for it)
-Add $ operator to the UI operators list, to expose this functionality even more
|
|
clean code
My future PRs will split the UI state from the Emulation State of some of these emulated
controller values and this readies the code for it.
|
|
casting a value to a u32 when it's originally an int, and it's exposed as int to users,
could end up in cases where a negative number would result as a positive one.
This doesn't really affect the value range of the attachment enum,
still I think the code was wrong.
Heavily tested.
|
|
Similar to the guitar, only control[0] was checked, and that felt random.
|
|
Input cleanup
|
|
Works exactly as before by default.
It will be used by my upcoming input PRs.
|
|
|
|
NumericSettings support a max, so let's use it.
It might not do much now, but the max and min values will be used to give visual feeback
in the UI in one of my upcoming input PRs
|
|
|
|
The control expression editor allows line breaks, but the serialization was
losing anything after the first line break (/r /n).
Instead of opting to encode them and decode them on serialization
(which I tried but was not safe, as it would lose /n written in the string by users),
I opted to replace them with a space.
|
|
And remove useless include
|
|
fix some related grammar errors
only the ButtonManager required code changes
|
|
where appropriate. SerialInterface was a leftover from the past,
and makes no sense to be used on actual/real controllers.
|
|
Fix hotkey suppression crash
|
|
|
|
to the map
Update references was failing to update the references, causing input to stay nullptr and crashing.
I fixed the case that triggered that, though also added checks against nullptrs for safety.
(cherry picked from commit 4bdcf707555a5568eddff957fa3604975ffb6ed7)
|
|
|
|
to only pitch or only yaw
|
|
the raw delta mouse input
Co-authored-by: Jordan Woyak <jordan.woyak@gmail.com>
|
|
InputCommon: block on DSU servers collectively instead of individually
|
|
Fix -Winconsistent-missing-override warnings on Android
|
|
Add ! before unused variables to 'use' them.
Ubuntu-x64 emits warnings for unused variables because gcc decides
it should ignore the void cast around them. See thread for discussion:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425
|
|
Loop index int i was being compared against GetControllerCount() which
returned a size_t. This was the only place GetControllerCount() was
called from so the change of return type doesn't disturb anything else.
Changing the loop index to size_t wouldn't work as well since it's
passed into GetController(), which takes an int and is called from many
places, so it would need a cast anyway on an already busy line.
|
|
a selector built up from all server sockets
|
|
InputCommon: dynamic input textures more optimizations
|
|
Cleanup X11 and XRANDR Macros
|
|
only running dynamic input textures once for all controllers
|
|
DualShock UDP Client is the only place in the code that assumed OnConfigChanged()
is called at least once on startup or it won't load up the setting, so I took care of that
|
|
This fixes build with X11 enabled and XRANDR disabled.
|
|
'specification 1' function and load in a 'specification' attribute that defaults to 1 if not present (with 1 being the only valid value at the moment)
|
|
|
|
DynamicInputTextures::Configuration
|
|
textures once for packs that have multiple configurations
|
|
|
|
|
|
|
|
|
|
[committer note: fixed commit message style]
|
|
Fix DualShockUDP not adding/removing devices correctly
|
|
-If adding 2 devices with the same name, they their unique id wouldn't be increased, causing a conflict.
-Removing a device wouldn't actually remove it from the internal devices list because the list of devices had already been updated when going through it.
-It was possible to remove devices belonging to other sources by adding a device with the same name and then removing it.
|
|
|
|
|
|
|
|
Make sure m_is_populating_devices is true when a WM_INPUT_DEVICE_CHANGE
event is received directly on the ciface thread, so that callbacks do
not occur while removing devices. This breaks a hold-and-wait deadlock
between the ciface thread and the CPU thread when using emulated
Wiimotes.
Co-authored-by: brainleq <brainleq@users.noreply.github.com>
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
|