mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-05-27 23:49:15 +00:00
Compare commits
1 Commits
Canary-1.3
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa72b5a298 |
@@ -155,9 +155,7 @@ namespace Ryujinx.Input.SDL3
|
|||||||
result |= GamepadFeaturesFlag.Led;
|
result |= GamepadFeaturesFlag.Led;
|
||||||
}
|
}
|
||||||
SDL_UnlockProperties(propID);
|
SDL_UnlockProperties(propID);
|
||||||
|
SDL_DestroyProperties(propID);
|
||||||
// NOTE: Do not call SDL_DestroyProperties here. These properties are owned
|
|
||||||
// internally by SDL and are freed when SDL_CloseGamepad is called (in Dispose).
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -331,18 +331,28 @@ namespace Ryujinx.Input.SDL3
|
|||||||
|
|
||||||
public IEnumerable<IGamepad> GetGamepads()
|
public IEnumerable<IGamepad> GetGamepads()
|
||||||
{
|
{
|
||||||
string[] ids;
|
lock (_gamepadsIds)
|
||||||
lock (_lock)
|
|
||||||
{
|
{
|
||||||
ids = _gamepadsIds.Values
|
foreach (var gamepad in _gamepadsIds)
|
||||||
.Concat(_joyConsIds.Values)
|
{
|
||||||
.Concat(_linkedJoyConsIds.Values)
|
yield return GetGamepad(gamepad.Value);
|
||||||
.ToArray();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (string id in ids)
|
lock (_joyConsIds)
|
||||||
{
|
{
|
||||||
yield return GetGamepad(id);
|
foreach (var gamepad in _joyConsIds)
|
||||||
|
{
|
||||||
|
yield return GetGamepad(gamepad.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lock (_linkedJoyConsIds)
|
||||||
|
{
|
||||||
|
foreach (var gamepad in _linkedJoyConsIds)
|
||||||
|
{
|
||||||
|
yield return GetGamepad(gamepad.Value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -561,24 +561,25 @@ namespace Ryujinx.Input.HLE
|
|||||||
!controllerConfig.Rumble.EnableRumble)
|
!controllerConfig.Rumble.EnableRumble)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VibrationValue leftVibrationValue = dualVibrationValue.Item1;
|
VibrationValue leftVibrationValue = dualVibrationValue.Item1;
|
||||||
VibrationValue rightVibrationValue = dualVibrationValue.Item2;
|
VibrationValue rightVibrationValue = dualVibrationValue.Item2;
|
||||||
|
|
||||||
leftVibrationValue.AmplitudeLow *= controllerConfig.Rumble.WeakRumble;
|
leftVibrationValue.AmplitudeLow *= controllerConfig.Rumble.WeakRumble;
|
||||||
leftVibrationValue.AmplitudeHigh *= controllerConfig.Rumble.StrongRumble;
|
leftVibrationValue.AmplitudeHigh *= controllerConfig.Rumble.StrongRumble;
|
||||||
rightVibrationValue.AmplitudeLow *= controllerConfig.Rumble.WeakRumble;
|
rightVibrationValue.AmplitudeLow *= controllerConfig.Rumble.WeakRumble;
|
||||||
rightVibrationValue.AmplitudeHigh *= controllerConfig.Rumble.StrongRumble;
|
rightVibrationValue.AmplitudeHigh *= controllerConfig.Rumble.StrongRumble;
|
||||||
|
|
||||||
if (!controllerConfig.Rumble.UseHDRumble || _gamepad?.HDRumble(leftVibrationValue, rightVibrationValue) == false)
|
if (!controllerConfig.Rumble.UseHDRumble || _gamepad?.HDRumble(leftVibrationValue, rightVibrationValue) == false)
|
||||||
{
|
{
|
||||||
float low = Math.Min(1f, (float)((rightVibrationValue.AmplitudeLow * 0.85 + rightVibrationValue.AmplitudeHigh * 0.15)));
|
float low = Math.Min(1f, (float)((rightVibrationValue.AmplitudeLow * 0.85 + rightVibrationValue.AmplitudeHigh * 0.15)));
|
||||||
float high = Math.Min(1f, (float)((leftVibrationValue.AmplitudeLow * 0.15 + leftVibrationValue.AmplitudeHigh * 0.85)));
|
float high = Math.Min(1f, (float)((leftVibrationValue.AmplitudeLow * 0.15 + leftVibrationValue.AmplitudeHigh * 0.85)));
|
||||||
_gamepad?.Rumble(low, high, 0xFFFFFFFF);
|
_gamepad?.Rumble(low, high, 0xFFFFFFFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.Debug?.Print(LogClass.Hid, $"Effect for {controllerConfig.PlayerIndex} " +
|
Logger.Debug?.Print(LogClass.Hid, $"Effect for {controllerConfig.PlayerIndex} " +
|
||||||
// Value=value/multiplier * multiplier (result)
|
// Value=value/multiplier * multiplier (result)
|
||||||
$"L.low.amp={leftVibrationValue.AmplitudeLow / controllerConfig.Rumble.WeakRumble} * {controllerConfig.Rumble.WeakRumble} ({leftVibrationValue.AmplitudeLow}), " +
|
$"L.low.amp={leftVibrationValue.AmplitudeLow / controllerConfig.Rumble.WeakRumble} * {controllerConfig.Rumble.WeakRumble} ({leftVibrationValue.AmplitudeLow}), " +
|
||||||
$"L.high.amp={leftVibrationValue.AmplitudeHigh / controllerConfig.Rumble.WeakRumble} * {controllerConfig.Rumble.WeakRumble} ({leftVibrationValue.AmplitudeHigh}), " +
|
$"L.high.amp={leftVibrationValue.AmplitudeHigh / controllerConfig.Rumble.WeakRumble} * {controllerConfig.Rumble.WeakRumble} ({leftVibrationValue.AmplitudeHigh}), " +
|
||||||
|
|||||||
Reference in New Issue
Block a user