- Remove SDL_DestroyProperties call on SDL-owned properties in
SDL3Gamepad.GetFeaturesFlag(). SDL_GetGamepadProperties returns
properties owned internally by SDL, freed when SDL_CloseGamepad is
called. Destroying them causes use-after-free, breaking motion sensor
data retrieval and crashing on controller reconnect.
- Fix GetGamepads() using wrong lock objects (_gamepadsIds, _joyConsIds,
_linkedJoyConsIds instead of _lock) and holding locks across yield
boundaries, which is incompatible with System.Threading.Lock. Snapshot
IDs under _lock and iterate outside it.
- Add null-conditional to _gamepad.Rumble() in NpadController.UpdateRumble()
to prevent NullReferenceException if gamepad is disconnected mid-update.