From c2fa6c3a9d968667c07e30beb7face1d4b716b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= Date: Sun, 4 Dec 2022 21:14:08 +0100 Subject: [PATCH] Debounce controller changes from Steam --- RELEASE.md | 1 + SteamController/Managers/SteamManager.cs | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/RELEASE.md b/RELEASE.md index 222ac03..1feb11b 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -23,3 +23,4 @@ It does help this project on being supported. - Skip repeated haptic requests - Allow to select Default profile (Desktop-mode profile) - Allow to change scroll direction +- Debounce controller changes from Steam diff --git a/SteamController/Managers/SteamManager.cs b/SteamController/Managers/SteamManager.cs index 9c8d597..b15cf50 100644 --- a/SteamController/Managers/SteamManager.cs +++ b/SteamController/Managers/SteamManager.cs @@ -5,7 +5,10 @@ namespace SteamController.Managers { public sealed class SteamManager : Manager { + public const int DebounceStates = 1; + private string? lastState; + private int stateChanged; public override void Tick(Context context) { @@ -14,12 +17,21 @@ namespace SteamController.Managers context.State.SteamUsesSteamInput = false; context.State.SteamUsesX360Controller = false; lastState = null; + stateChanged = 0; return; } var usesController = UsesController(); if (lastState == usesController) + { + stateChanged = 0; return; + } + else if (stateChanged < DebounceStates) + { + stateChanged++; + return; + } if (usesController is not null) { @@ -40,6 +52,7 @@ namespace SteamController.Managers } lastState = usesController; + stateChanged = 0; #if DEBUG CommonHelpers.Log.TraceLine(