mirror of
https://github.com/ayufan/steam-deck-tools.git
synced 2026-01-04 15:50:23 +01:00
Do not send repeated haptic if disabled
This commit is contained in:
parent
7c559e58f7
commit
e52459d02d
|
|
@ -28,3 +28,4 @@ It does help this project on being supported.
|
|||
- STEAM + 3 dots brings Task Manager (CTRL+SHIFT+ESCAPE)
|
||||
- Append `controller_blacklist` to `config.vdf` if missing
|
||||
- Add configurable BackPanel keys (allowed mappings are subject to change)
|
||||
- Fix delay in X360Rumble: Do not send repeated haptic if disabled
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@ namespace SteamController.Devices
|
|||
{
|
||||
public partial class SteamController
|
||||
{
|
||||
public bool SetHaptic(byte position, ushort amplitude, ushort period, ushort count = 0)
|
||||
private bool[] hapticEnabled = new bool[byte.MaxValue];
|
||||
|
||||
private bool sendHaptic(byte position, ushort amplitude, ushort period, ushort count = 0)
|
||||
{
|
||||
var haptic = new SDCHapticPacket()
|
||||
{
|
||||
|
|
@ -20,6 +22,9 @@ namespace SteamController.Devices
|
|||
count = count
|
||||
};
|
||||
|
||||
Log.TraceLine("STEAM: Haptic: pos={0}, amplitude={1}, period={2}, count={3}",
|
||||
position, amplitude, period, count);
|
||||
|
||||
var bytes = new byte[Marshal.SizeOf<SDCHapticPacket>()];
|
||||
var handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
|
||||
try
|
||||
|
|
@ -34,5 +39,16 @@ namespace SteamController.Devices
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool SetHaptic(byte position, ushort amplitude, ushort period, ushort count = 0)
|
||||
{
|
||||
// do not send repeated haptic queries if was disabled
|
||||
bool enabled = amplitude != 0 && period != 0;
|
||||
if (!hapticEnabled[position] && !enabled)
|
||||
return false;
|
||||
hapticEnabled[position] = enabled;
|
||||
|
||||
return sendHaptic(position, amplitude, period, count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,14 +23,12 @@ namespace SteamController.Profiles
|
|||
|
||||
if (context.X360.FeedbackLargeMotor.HasValue)
|
||||
{
|
||||
Log.TraceLine("X360: Feedback Large: {0}", context.X360.FeedbackLargeMotor.Value);
|
||||
context.Steam.SetHaptic(
|
||||
1, GetHapticAmplitude(context.X360.FeedbackLargeMotor), RumbleSettings.Period, FeedbackCount);
|
||||
}
|
||||
|
||||
if (context.X360.FeedbackSmallMotor.HasValue)
|
||||
{
|
||||
Log.TraceLine("X360: Feedback Small: {0}", context.X360.FeedbackSmallMotor.Value);
|
||||
context.Steam.SetHaptic(
|
||||
0, GetHapticAmplitude(context.X360.FeedbackSmallMotor), RumbleSettings.Period, FeedbackCount);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue