mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-05-04 12:09:01 +00:00
|
Some checks are pending
Canary CI / Release for linux-arm64 (push) Waiting to run
Canary CI / Release for linux-x64 (push) Waiting to run
Canary CI / Release for win-x64 (push) Waiting to run
Canary CI / Release MacOS universal (push) Waiting to run
Canary CI / Post CI Steps (push) Blocked by required conditions
Four SDL3 gamepad fixes, all affecting real users with Switch controllers. **Crash on reconnect / broken motion** — `GetFeaturesFlag()` was calling `SDL_DestroyProperties()` on properties owned by SDL internally, causing a use-after-free. This breaks gyro after the first read and crashes on reconnect. Fix: just don't destroy them. **Thread safety in `GetGamepads()`** — was locking the wrong objects and holding locks across `yield` boundaries, which is undefined behavior with `System.Threading.Lock`. Fix: snapshot IDs under `_lock`, iterate outside it. **Rumble NPE on disconnect** — `UpdateRumble()` called `_gamepad.Rumble()` without a null check; throws if the controller disconnects mid-update. Fix: `_gamepad?.Rumble(...)`. **Linux: HIDAPI conflicts with `hid_nintendo`** — when the `hid_nintendo` kernel module is loaded, it provides evdev nodes for both the gamepad and IMU that SDL3's evdev backend correctly combines. HIDAPI conflicts with it, breaking gyro and wireless hotplug. Fix: detect `/sys/module/hid_nintendo` at startup and disable HIDAPI for Switch controllers automatically. Overridable via `SDL_JOYSTICK_HIDAPI_SWITCH=1`. Tested with an 8BitDo Ultimate Bluetooth Controller on Linux. Co-authored-by: schuay <36006+schuay@users.noreply.github.com> Reviewed-on: https://git.ryujinx.app/projects/Ryubing/pulls/19 |
||
|---|---|---|
| .. | ||
| ARMeilleure | ||
| Ryujinx | ||
| Ryujinx.Audio | ||
| Ryujinx.Audio.Backends.Apple | ||
| Ryujinx.Audio.Backends.OpenAL | ||
| Ryujinx.Audio.Backends.SDL3 | ||
| Ryujinx.Audio.Backends.SoundIo | ||
| Ryujinx.BuildValidationTasks | ||
| Ryujinx.Common | ||
| Ryujinx.Cpu | ||
| Ryujinx.Graphics.Device | ||
| Ryujinx.Graphics.GAL | ||
| Ryujinx.Graphics.Gpu | ||
| Ryujinx.Graphics.Host1x | ||
| Ryujinx.Graphics.Nvdec | ||
| Ryujinx.Graphics.Nvdec.FFmpeg | ||
| Ryujinx.Graphics.Nvdec.Vp9 | ||
| Ryujinx.Graphics.OpenGL | ||
| Ryujinx.Graphics.RenderDocApi | ||
| Ryujinx.Graphics.Shader | ||
| Ryujinx.Graphics.Texture | ||
| Ryujinx.Graphics.Vic | ||
| Ryujinx.Graphics.Video | ||
| Ryujinx.Graphics.Vulkan | ||
| Ryujinx.HLE | ||
| Ryujinx.HLE.Generators | ||
| Ryujinx.Horizon | ||
| Ryujinx.Horizon.Common | ||
| Ryujinx.Horizon.Generators | ||
| Ryujinx.Horizon.Kernel.Generators | ||
| Ryujinx.Input | ||
| Ryujinx.Input.SDL3 | ||
| Ryujinx.Memory | ||
| Ryujinx.SDL3.Common | ||
| Ryujinx.ShaderTools | ||
| Ryujinx.Tests | ||
| Ryujinx.Tests.Memory | ||
| Ryujinx.Tests.Unicorn | ||
| Ryujinx.UI.LocaleGenerator | ||
| Spv.Generator | ||