From 588920e96a9a4e9506ef77009f23f66c5932cdfe Mon Sep 17 00:00:00 2001 From: Lesueur Benjamin Date: Fri, 6 Dec 2024 18:29:33 +0100 Subject: [PATCH] build 0.22.0.3 (#373) * Fixed an issue preventing Quicktools window from moving to the right display on settings change * Fixed an issue causing a crash when main screen is changed on windows settings * Fixed an issue causing UI manager to crash when failing to retrieve the currently targeted ComboBox * remove deprecated ui:WindowHelper.UseAcrylicBackdrop and ui:WindowHelper.UseAeroBackdrop * Set PublishReadyToRun to true * Prevent HC from recreating default hotkeys if user already have defined ones * Fixed an issue causing hotkeys to duplicate on reboot when ButtonFlags is already used * use Task.Delay().ConfigureAwait(false) when outside UI thread * remove outdated temperature hack for Galileo (Steam Deck) * Increase HidDevice Read loop priority * Reduce CPU overhead when using NeptuneController (Steam Deck) and Gordon Controller (Steam Controller) * rollback ButtonState and AxisState ConcurrentDictionary * build 0.22.0.3 --- HandheldCompanion.iss | 2 +- .../Windows/OnScreenKeyboardLegacyCommands.cs | 2 +- .../Controllers/GordonController.cs | 10 +-- HandheldCompanion/Controllers/IController.cs | 4 +- .../Controllers/NeptuneController.cs | 13 ++-- .../Controls/Hints/Hint_SteamInput.cs | 2 +- HandheldCompanion/Devices/ASUS/ROGAlly.cs | 4 +- HandheldCompanion/Devices/MSI/ClawA1M.cs | 4 +- HandheldCompanion/HandheldCompanion.csproj | 3 +- HandheldCompanion/Inputs/AxisState.cs | 11 +-- HandheldCompanion/Inputs/ButtonState.cs | 7 +- .../Managers/ControllerManager.cs | 12 +-- HandheldCompanion/Managers/DeviceManager.cs | 14 ++-- .../Managers/DynamicLightingManager.cs | 2 +- HandheldCompanion/Managers/GPUManager.cs | 2 +- HandheldCompanion/Managers/HotkeysManager.cs | 33 ++++++-- .../Managers/PerformanceManager.cs | 4 +- HandheldCompanion/Managers/ProcessManager.cs | 4 +- HandheldCompanion/Managers/ProfileManager.cs | 6 ++ HandheldCompanion/Managers/SensorsManager.cs | 10 +-- HandheldCompanion/Managers/ToastManager.cs | 1 + HandheldCompanion/Managers/VirtualManager.cs | 4 +- .../Platforms/LibreHardwareMonitor.cs | 12 --- HandheldCompanion/Platforms/RTSS.cs | 2 +- HandheldCompanion/Platforms/Steam.cs | 2 +- HandheldCompanion/Sensors/SerialUSBIMU.cs | 4 +- HandheldCompanion/UI/UIGamepad.cs | 72 +++++++++--------- HandheldCompanion/UI/UISounds.cs | 2 +- .../ViewModels/HotkeyViewModel.cs | 4 +- .../Views/Pages/ControllerPage.xaml.cs | 2 +- .../Views/Pages/SettingsPage.xaml.cs | 7 +- HandheldCompanion/Views/SplashScreen.xaml | 7 +- .../Views/Windows/MainWindow.xaml | 6 +- .../Views/Windows/MainWindow.xaml.cs | 13 ++-- .../Views/Windows/OverlayQuickTools.xaml.cs | 2 + HandheldCompanion/XInputPlus/XInputPlus.cs | 2 +- hidapi.net/HidDevice.cs | 5 +- hidapi.net/hidapi.dll | Bin 18432 -> 162304 bytes steam-hidapi.net/GordonController.cs | 6 +- steam-hidapi.net/NeptuneController.cs | 8 +- 40 files changed, 165 insertions(+), 145 deletions(-) diff --git a/HandheldCompanion.iss b/HandheldCompanion.iss index c89379e23..6b9984b50 100644 --- a/HandheldCompanion.iss +++ b/HandheldCompanion.iss @@ -26,7 +26,7 @@ #define InstallerVersion '0.2' #define MyAppSetupName 'Handheld Companion' #define MyBuildId 'HandheldCompanion' -#define MyAppVersion '0.22.0.2' +#define MyAppVersion '0.22.0.3' #define MyAppPublisher 'BenjaminLSR' #define MyAppCopyright 'Copyright @ BenjaminLSR' #define MyAppURL 'https://github.com/Valkirie/HandheldCompanion' diff --git a/HandheldCompanion/Commands/Functions/Windows/OnScreenKeyboardLegacyCommands.cs b/HandheldCompanion/Commands/Functions/Windows/OnScreenKeyboardLegacyCommands.cs index a838284c0..649580864 100644 --- a/HandheldCompanion/Commands/Functions/Windows/OnScreenKeyboardLegacyCommands.cs +++ b/HandheldCompanion/Commands/Functions/Windows/OnScreenKeyboardLegacyCommands.cs @@ -40,7 +40,7 @@ public override void Execute(bool IsKeyDown, bool IsKeyUp, bool IsBackground) { // Start a new osk.exe process Process OSK = Process.Start(new ProcessStartInfo("osk.exe") { UseShellExecute = true, WindowStyle = ProcessWindowStyle.Hidden }); - await Task.Delay(200); + await Task.Delay(200).ConfigureAwait(false); // Avoid blocking the synchronization context // Find the OSK window. IntPtr hwndOSK = FindWindow("OSKMainClass", null); diff --git a/HandheldCompanion/Controllers/GordonController.cs b/HandheldCompanion/Controllers/GordonController.cs index 1682afcf8..5f15a5a2b 100644 --- a/HandheldCompanion/Controllers/GordonController.cs +++ b/HandheldCompanion/Controllers/GordonController.cs @@ -221,16 +221,16 @@ public override void UpdateInputs(long ticks, float delta) base.UpdateInputs(ticks, delta); } - private async Task OnControllerInputReceived(GordonControllerInputEventArgs input) - { - this.input = input; - } public override void Plug() { try { - Controller.OnControllerInputReceived = input => OnControllerInputReceived(input); + Controller.OnControllerInputReceived += input => + { + this.input = input; + return Task.CompletedTask; + }; // open controller Open(); diff --git a/HandheldCompanion/Controllers/IController.cs b/HandheldCompanion/Controllers/IController.cs index 7726a2208..00246feb1 100644 --- a/HandheldCompanion/Controllers/IController.cs +++ b/HandheldCompanion/Controllers/IController.cs @@ -300,7 +300,7 @@ public virtual void Rumble(int delay = 125, byte LargeMotor = byte.MaxValue, byt rumbleTask = Task.Run(async () => { SetVibration(LargeMotor, SmallMotor); - await Task.Delay(delay); + await Task.Delay(delay).ConfigureAwait(false); // Avoid blocking the synchronization context SetVibration(0, 0); }); } @@ -365,7 +365,7 @@ public virtual void CyclePort() Task.Run(async () => { Details.Uninstall(false); - await Task.Delay(3000); + await Task.Delay(3000).ConfigureAwait(false); // Avoid blocking the synchronization context Devcon.Refresh(); }); break; diff --git a/HandheldCompanion/Controllers/NeptuneController.cs b/HandheldCompanion/Controllers/NeptuneController.cs index 749cf97d4..b7a2fb32d 100644 --- a/HandheldCompanion/Controllers/NeptuneController.cs +++ b/HandheldCompanion/Controllers/NeptuneController.cs @@ -260,16 +260,15 @@ private void Open() Controller.RequestLizardMode(false); // create handler - Controller.OnControllerInputReceived += input => OnControllerInputReceived(input); + Controller.OnControllerInputReceived += input => + { + this.input = input; + return Task.CompletedTask; + }; } catch { } } - private async Task OnControllerInputReceived(NeptuneControllerInputEventArgs input) - { - this.input = input; - } - private void Close() { try @@ -394,7 +393,7 @@ private async void RumbleThreadLoop(object? obj) if (GetHapticIntensity(FeedbackSmallMotor, MinIntensity, MaxIntensity, out var rightIntensity)) Controller.SetHaptic2(SCHapticMotor.Right, NCHapticStyle.Weak, rightIntensity); - await Task.Delay(TimerManager.GetPeriod() * 2); + Thread.Sleep(TimerManager.GetPeriod() * 2); } } diff --git a/HandheldCompanion/Controls/Hints/Hint_SteamInput.cs b/HandheldCompanion/Controls/Hints/Hint_SteamInput.cs index 9c31284fa..9ee9fc285 100644 --- a/HandheldCompanion/Controls/Hints/Hint_SteamInput.cs +++ b/HandheldCompanion/Controls/Hints/Hint_SteamInput.cs @@ -51,7 +51,7 @@ protected override void HintActionButton_Click(object sender, RoutedEventArgs e) // halt steam and wait PlatformManager.Steam.StopProcess(); while (PlatformManager.Steam.IsRunning) - await Task.Delay(1000); + await Task.Delay(1000).ConfigureAwait(false); // Avoid blocking the synchronization context; // overwrite desktop layout PlatformManager.Steam.SetUseSteamControllerConfigValue(0); diff --git a/HandheldCompanion/Devices/ASUS/ROGAlly.cs b/HandheldCompanion/Devices/ASUS/ROGAlly.cs index 544dff1d0..b9ba72fcf 100644 --- a/HandheldCompanion/Devices/ASUS/ROGAlly.cs +++ b/HandheldCompanion/Devices/ASUS/ROGAlly.cs @@ -504,10 +504,10 @@ private void HandleEvent(byte key) case 56: // Armory crate: Click case 166: // Command center: Click { - Task.Factory.StartNew(async () => + Task.Run(async () => { KeyPress(button); - await Task.Delay(KeyPressDelay); + await Task.Delay(KeyPressDelay).ConfigureAwait(false); // Avoid blocking the synchronization context KeyRelease(button); }); } diff --git a/HandheldCompanion/Devices/MSI/ClawA1M.cs b/HandheldCompanion/Devices/MSI/ClawA1M.cs index 21175a797..98287290a 100644 --- a/HandheldCompanion/Devices/MSI/ClawA1M.cs +++ b/HandheldCompanion/Devices/MSI/ClawA1M.cs @@ -213,10 +213,10 @@ private void onWMIEvent(object sender, EventArrivedEventArgs e) case WMIEventCode.LaunchMcxMainUI: // MSI Claw: Click case WMIEventCode.LaunchMcxOSD: // Quick Settings: Click { - Task.Factory.StartNew(async () => + Task.Run(async () => { KeyPress(button); - await Task.Delay(KeyPressDelay); + await Task.Delay(KeyPressDelay).ConfigureAwait(false); // Avoid blocking the synchronization context KeyRelease(button); }); } diff --git a/HandheldCompanion/HandheldCompanion.csproj b/HandheldCompanion/HandheldCompanion.csproj index 45ccedd6d..ddb7b6d18 100644 --- a/HandheldCompanion/HandheldCompanion.csproj +++ b/HandheldCompanion/HandheldCompanion.csproj @@ -12,11 +12,12 @@ HandheldCompanion.App $(SolutionDir)bin\$(Configuration) Resources\icon.ico - 0.22.0.2 + 0.22.0.3 app.manifest AnyCPU;x64;x86 true Always + true diff --git a/HandheldCompanion/Inputs/AxisState.cs b/HandheldCompanion/Inputs/AxisState.cs index 59bc4c904..0e4e9c51e 100644 --- a/HandheldCompanion/Inputs/AxisState.cs +++ b/HandheldCompanion/Inputs/AxisState.cs @@ -1,5 +1,6 @@ using Newtonsoft.Json; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; @@ -8,9 +9,9 @@ namespace HandheldCompanion.Inputs; [Serializable] public partial class AxisState : ICloneable { - public Dictionary State = new(); + public ConcurrentDictionary State = new(); - public AxisState(Dictionary State) + public AxisState(ConcurrentDictionary State) { foreach (var state in State) this[state.Key] = state.Value; @@ -24,7 +25,7 @@ public AxisState() public short this[AxisFlags axis] { - get => !State.ContainsKey(axis) ? (short)0 : State[axis]; + get => State.TryGetValue(axis, out short value) ? value : (short)0; set => State[axis] = value; } @@ -77,8 +78,8 @@ public override bool Equals(object obj) return false; } - public static bool EqualsWithValues(Dictionary obj1, - Dictionary obj2) + public static bool EqualsWithValues(ConcurrentDictionary obj1, + ConcurrentDictionary obj2) { if (obj1.Count != obj2.Count) return false; { diff --git a/HandheldCompanion/Inputs/ButtonState.cs b/HandheldCompanion/Inputs/ButtonState.cs index 6372cb2f5..d840502ff 100644 --- a/HandheldCompanion/Inputs/ButtonState.cs +++ b/HandheldCompanion/Inputs/ButtonState.cs @@ -1,5 +1,6 @@ using Newtonsoft.Json; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; @@ -8,9 +9,9 @@ namespace HandheldCompanion.Inputs; [Serializable] public partial class ButtonState : ICloneable { - public Dictionary State = new(); + public ConcurrentDictionary State = new(); - public ButtonState(Dictionary State) + public ButtonState(ConcurrentDictionary State) { foreach (var state in State) this[state.Key] = state.Value; @@ -24,7 +25,7 @@ public ButtonState() public bool this[ButtonFlags button] { - get => State.ContainsKey(button) && State[button]; + get => State.TryGetValue(button, out bool value) && value; set => State[button] = value; } diff --git a/HandheldCompanion/Managers/ControllerManager.cs b/HandheldCompanion/Managers/ControllerManager.cs index d6fe6c96f..56c585bad 100644 --- a/HandheldCompanion/Managers/ControllerManager.cs +++ b/HandheldCompanion/Managers/ControllerManager.cs @@ -413,7 +413,7 @@ private static async void HidDeviceArrived(PnPDetails details, Guid InterfaceGui } catch { - await Task.Delay(1000); + await Task.Delay(1000).ConfigureAwait(false); // Avoid blocking the synchronization context } } @@ -600,7 +600,7 @@ private static async void HidDeviceArrived(PnPDetails details, Guid InterfaceGui } while (!controller.IsReady && controller.IsConnected()) - await Task.Delay(250); + await Task.Delay(250).ConfigureAwait(false); // Avoid blocking the synchronization context // set (un)busy controller.IsBusy = false; @@ -640,7 +640,7 @@ private static async void HidDeviceRemoved(PnPDetails details, Guid IntefaceGuid if (Controllers.TryGetValue(details.baseContainerDeviceInstanceId, out controller)) break; - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context } if (controller is null) @@ -693,7 +693,7 @@ private static void watchdogThreadLoop(object? obj) foreach (XInputController xInputController in Controllers.Values.Where(c => c.Details is not null && c.Details.isXInput)) { - byte UserIndex = DeviceManager.GetXInputIndexAsync(xInputController.Details.baseContainerDevicePath); + byte UserIndex = DeviceManager.GetXInputIndexAsync(xInputController.Details.baseContainerDevicePath, true); // controller is not ready yet if (UserIndex == byte.MaxValue) @@ -882,7 +882,7 @@ private static async void XUsbDeviceArrived(PnPDetails details, Guid IntefaceGui } while (!controller.IsReady && controller.IsConnected()) - await Task.Delay(250); + await Task.Delay(250).ConfigureAwait(false); // Avoid blocking the synchronization context // set (un)busy controller.IsBusy = false; @@ -932,7 +932,7 @@ private static async void XUsbDeviceRemoved(PnPDetails details, Guid IntefaceGui if (Controllers.TryGetValue(details.baseContainerDeviceInstanceId, out controller)) break; - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context } if (controller is null) diff --git a/HandheldCompanion/Managers/DeviceManager.cs b/HandheldCompanion/Managers/DeviceManager.cs index 5a09bbccc..0f2dd0830 100644 --- a/HandheldCompanion/Managers/DeviceManager.cs +++ b/HandheldCompanion/Managers/DeviceManager.cs @@ -501,7 +501,7 @@ private static void XUsbDevice_DeviceRemoved(DeviceEventArgs obj) while (DateTime.Now < timeout && deviceEx is null) { deviceEx = FindDevice(InstanceId); - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context } if (deviceEx is null) @@ -533,7 +533,7 @@ private static void XUsbDevice_DeviceArrived(DeviceEventArgs obj) while (DateTime.Now < timeout && deviceEx is null) { deviceEx = FindDevice(InstanceId); - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context } if (deviceEx is not null && deviceEx.isGaming) @@ -542,7 +542,7 @@ private static void XUsbDevice_DeviceArrived(DeviceEventArgs obj) deviceEx.baseContainerDevicePath = obj.SymLink; if (deviceEx.EnumeratorName.Equals("USB")) - deviceEx.XInputUserIndex = GetXInputIndexAsync(obj.SymLink); + deviceEx.XInputUserIndex = GetXInputIndexAsync(obj.SymLink, false); if (deviceEx.XInputUserIndex == byte.MaxValue) deviceEx.XInputDeviceIdx = GetDeviceIndex(obj.SymLink); @@ -576,7 +576,7 @@ private static void HidDevice_DeviceRemoved(DeviceEventArgs obj) while (DateTime.Now < timeout && deviceEx is null) { deviceEx = FindDevice(InstanceId); - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context } // skip if XInput @@ -610,7 +610,7 @@ private static void HidDevice_DeviceArrived(DeviceEventArgs obj) while (DateTime.Now < timeout && deviceEx is null) { deviceEx = GetDetails(obj.SymLink); - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context } // skip if XInput @@ -662,7 +662,7 @@ private static void UsbDevice_DeviceArrived(DeviceEventArgs obj) } } - public static byte GetXInputIndexAsync(string SymLink) + public static byte GetXInputIndexAsync(string SymLink, bool UIthread) { byte ledState = 0; @@ -684,7 +684,7 @@ public static byte GetXInputIndexAsync(string SymLink) ledState = ledStateData[2]; } - Task.Delay(1000); + Task.Delay(1000).ConfigureAwait(UIthread); } return XINPUT_LED_TO_PORT_MAP[ledState]; diff --git a/HandheldCompanion/Managers/DynamicLightingManager.cs b/HandheldCompanion/Managers/DynamicLightingManager.cs index 07e248be6..8823b7e7a 100644 --- a/HandheldCompanion/Managers/DynamicLightingManager.cs +++ b/HandheldCompanion/Managers/DynamicLightingManager.cs @@ -143,7 +143,7 @@ private static async void InitializeDirect3DDevice() if (ex.ResultCode == ResultCode.DeviceLost) { while (device is not null && device.TestCooperativeLevel() == ResultCode.DeviceLost) - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context // Recreate the device and resources ReleaseDirect3DDevice(); diff --git a/HandheldCompanion/Managers/GPUManager.cs b/HandheldCompanion/Managers/GPUManager.cs index ab4372e3b..9c6af5d39 100644 --- a/HandheldCompanion/Managers/GPUManager.cs +++ b/HandheldCompanion/Managers/GPUManager.cs @@ -185,7 +185,7 @@ private static void GPUDisconnect(GPU GPU) private static void MultimediaManager_PrimaryScreenChanged(DesktopScreen screen) { AdapterInformation key = DisplayGPU.Keys.FirstOrDefault(GPU => GPU.Details.DeviceName == screen.screen.DeviceName); - if (DisplayGPU.TryGetValue(key, out GPU gpu)) + if (key is not null && DisplayGPU.TryGetValue(key, out GPU gpu)) { LogManager.LogError("Retrieved DisplayAdapter: {0} for screen: {1}", gpu.ToString(), screen.screen.DeviceName); diff --git a/HandheldCompanion/Managers/HotkeysManager.cs b/HandheldCompanion/Managers/HotkeysManager.cs index 4443b660c..44c83db1a 100644 --- a/HandheldCompanion/Managers/HotkeysManager.cs +++ b/HandheldCompanion/Managers/HotkeysManager.cs @@ -46,8 +46,9 @@ public static async Task Start() ProcessHotkey(fileName); // get latest known version + // if last time HC version used old hotkey engine and user has no defined hotkeys Version LastVersion = Version.Parse(SettingsManager.GetString("LastVersion")); - if (LastVersion < Version.Parse(Settings.VersionHotkeyManager)) + if (LastVersion < Version.Parse(Settings.VersionHotkeyManager) && hotkeys.Count == 0) { // create a few defaults hotkeys if (!hotkeys.Values.Any(hotkey => hotkey.command is QuickToolsCommands quickToolsCommands)) @@ -152,6 +153,12 @@ private static void ProcessHotkey(string fileName) // too old throw new Exception("Hotkey is outdated."); } + else if (version <= Version.Parse("0.22.0.2")) + { + outputraw = outputraw.Replace( + "\"System.Collections.Generic.Dictionary`2[[HandheldCompanion.Inputs.ButtonFlags, HandheldCompanion],[System.Boolean, System.Private.CoreLib]], System.Private.CoreLib\"", + "\"System.Collections.Concurrent.ConcurrentDictionary`2[[HandheldCompanion.Inputs.ButtonFlags, HandheldCompanion],[System.Boolean, System.Private.CoreLib]], System.Collections.Concurrent\""); + } else if (version <= Version.Parse("0.21.8.0")) { outputraw = outputraw.Replace( @@ -178,9 +185,16 @@ private static void ProcessHotkey(string fileName) if (hotkey is null) return; - if (CheckAvailableButtonFlag(hotkey.ButtonFlags)) + // check if button flags is already used + if (IsUsedButtonFlag(hotkey.ButtonFlags)) + { + // update button flags hotkey.ButtonFlags = GetAvailableButtonFlag(); + // Delete the old file + File.Delete(fileName); + } + if (hotkey.ButtonFlags == ButtonFlags.None) return; @@ -281,16 +295,19 @@ private static void ProcessHotkey(string fileName) var isPinned = (bool)dictionary["IsPinned"]; hotkey.IsPinned = isPinned; - // Common ButtonFlags check - if (CheckAvailableButtonFlag(hotkey.ButtonFlags)) + // check if button flags is already used + if (IsUsedButtonFlag(hotkey.ButtonFlags)) + { + // update button flags hotkey.ButtonFlags = GetAvailableButtonFlag(); + // Delete the old file + File.Delete(fileName); + } + if (hotkey.ButtonFlags == ButtonFlags.None) return null; - // Delete the old file - File.Delete(fileName); - // Save new hotkey json SerializeHotkey(hotkey); @@ -301,7 +318,7 @@ private static void ProcessHotkey(string fileName) return null; } - private static bool CheckAvailableButtonFlag(ButtonFlags buttonFlags) + private static bool IsUsedButtonFlag(ButtonFlags buttonFlags) { HashSet usedFlags = hotkeys.Values.Select(h => h.ButtonFlags).ToHashSet(); return usedFlags.Contains(buttonFlags); diff --git a/HandheldCompanion/Managers/PerformanceManager.cs b/HandheldCompanion/Managers/PerformanceManager.cs index d038e0735..ec1599564 100644 --- a/HandheldCompanion/Managers/PerformanceManager.cs +++ b/HandheldCompanion/Managers/PerformanceManager.cs @@ -664,7 +664,7 @@ private static async void tdpWatchdog_Elapsed(object? sender, ElapsedEventArgs e if (ReadTDP != TDP || forcedUpdate) RequestTDP((PowerType)idx, TDP, true); - await Task.Delay(20); + await Task.Delay(20).ConfigureAwait(false); // Avoid blocking the synchronization context } // are we done ? @@ -858,7 +858,7 @@ private static async void RequestTDP(double[] values, bool immediate = false) for (int idx = (int)PowerType.Slow; idx <= (int)PowerType.Fast; idx++) { RequestTDP((PowerType)idx, values[idx], immediate); - await Task.Delay(20); + await Task.Delay(20).ConfigureAwait(false); // Avoid blocking the synchronization context } } diff --git a/HandheldCompanion/Managers/ProcessManager.cs b/HandheldCompanion/Managers/ProcessManager.cs index 54d3864ee..22a50109e 100644 --- a/HandheldCompanion/Managers/ProcessManager.cs +++ b/HandheldCompanion/Managers/ProcessManager.cs @@ -510,7 +510,7 @@ public static async void ResumeProcess(ProcessEx processEx) ProcessUtils.NtResumeProcess(process.Handle); }); - await Task.Delay(500); + await Task.Delay(500).ConfigureAwait(false); // Avoid blocking the synchronization context // restore process windows foreach (ProcessWindow processWindow in processEx.ProcessWindows.Values) @@ -527,7 +527,7 @@ public static async void SuspendProcess(ProcessEx processEx) foreach (ProcessWindow processWindow in processEx.ProcessWindows.Values) ProcessUtils.ShowWindow(processWindow.Hwnd, (int)ProcessUtils.ShowWindowCommands.Hide); - await Task.Delay(500); + await Task.Delay(500).ConfigureAwait(false); // Avoid blocking the synchronization context ProcessUtils.NtSuspendProcess(processEx.Process.Handle); diff --git a/HandheldCompanion/Managers/ProfileManager.cs b/HandheldCompanion/Managers/ProfileManager.cs index 3bc6f9432..268301ae7 100644 --- a/HandheldCompanion/Managers/ProfileManager.cs +++ b/HandheldCompanion/Managers/ProfileManager.cs @@ -517,6 +517,12 @@ private static void ProcessProfile(string fileName, bool imported = false) { // too old throw new Exception("Profile is outdated."); + } + else if (version <= Version.Parse("0.22.0.2")) + { + outputraw = outputraw.Replace( + "\"System.Collections.Generic.Dictionary`2[[HandheldCompanion.Inputs.ButtonFlags, HandheldCompanion],[System.Boolean, System.Private.CoreLib]], System.Private.CoreLib\"", + "\"System.Collections.Concurrent.ConcurrentDictionary`2[[HandheldCompanion.Inputs.ButtonFlags, HandheldCompanion],[System.Boolean, System.Private.CoreLib]], System.Collections.Concurrent\""); } else if (version <= Version.Parse("0.21.7.0")) { diff --git a/HandheldCompanion/Managers/SensorsManager.cs b/HandheldCompanion/Managers/SensorsManager.cs index 35e4b6cc6..14b0bf60d 100644 --- a/HandheldCompanion/Managers/SensorsManager.cs +++ b/HandheldCompanion/Managers/SensorsManager.cs @@ -293,7 +293,7 @@ public static async void Calibrate(Dictionary gamepadMotion for (int i = 4; i > 0; i--) { dialog.UpdateContent($"Calibration will start in {i} seconds."); - await Task.Delay(1000); + await Task.Delay(1000); // Captures synchronization context } foreach (GamepadMotion gamepadMotion in gamepadMotions.Values) @@ -306,7 +306,7 @@ public static async void Calibrate(Dictionary gamepadMotion // wait until device is steady DateTime timeout = DateTime.Now.Add(TimeSpan.FromSeconds(3)); while (DateTime.Now < timeout && !gamepadMotion.GetAutoCalibrationIsSteady()) - await Task.Delay(100); + await Task.Delay(100); // Captures synchronization context // device is either too shaky or stalled bool IsSteady = gamepadMotion.GetAutoCalibrationIsSteady(); @@ -321,7 +321,7 @@ public static async void Calibrate(Dictionary gamepadMotion dialog.UpdateContent($"Calibration device is silent or unsteady."); // wait a bit - await Task.Delay(2000); + await Task.Delay(2000); // Captures synchronization context break; } @@ -332,7 +332,7 @@ public static async void Calibrate(Dictionary gamepadMotion // give gamepad motion 3 seconds to get values timeout = DateTime.Now.Add(TimeSpan.FromSeconds(3)); while (DateTime.Now < timeout) - await Task.Delay(100); + await Task.Delay(100); // Captures synchronization context // halt continuous calibration gamepadMotion.PauseContinuousCalibration(); @@ -377,7 +377,7 @@ public static async void Calibrate(Dictionary gamepadMotion dialog.UpdateContent($"Calibration succeeded: stationary sensor noise recorded. Drift correction found. Confidence: {confidence * 100.0f}%"); // wait a bit - await Task.Delay(2000); + await Task.Delay(2000); // Captures synchronization context } Close: diff --git a/HandheldCompanion/Managers/ToastManager.cs b/HandheldCompanion/Managers/ToastManager.cs index 113661448..6ed4b5ad9 100644 --- a/HandheldCompanion/Managers/ToastManager.cs +++ b/HandheldCompanion/Managers/ToastManager.cs @@ -73,6 +73,7 @@ public static void SendToast(string title, string content = "", string img = "To } }); + ToastThread.IsBackground = true; ToastThread.Start(); } diff --git a/HandheldCompanion/Managers/VirtualManager.cs b/HandheldCompanion/Managers/VirtualManager.cs index 8cd354068..4615d7573 100644 --- a/HandheldCompanion/Managers/VirtualManager.cs +++ b/HandheldCompanion/Managers/VirtualManager.cs @@ -164,7 +164,7 @@ private static async void ProfileManager_Applied(Profile profile, UpdateSource s return; while (ControllerManager.managerStatus == ControllerManagerStatus.Busy) - await Task.Delay(1000); + await Task.Delay(1000).ConfigureAwait(false); // Avoid blocking the synchronization context switch (profile.HID) { @@ -184,7 +184,7 @@ private static async void ProfileManager_Discarded(Profile profile, bool swapped return; while (ControllerManager.managerStatus == ControllerManagerStatus.Busy) - await Task.Delay(1000); + await Task.Delay(1000).ConfigureAwait(false); // Avoid blocking the synchronization context // restore default HID mode if (profile.HID != HIDmode.NotSelected) diff --git a/HandheldCompanion/Platforms/LibreHardwareMonitor.cs b/HandheldCompanion/Platforms/LibreHardwareMonitor.cs index 2821ce7ee..5971bcc8e 100644 --- a/HandheldCompanion/Platforms/LibreHardwareMonitor.cs +++ b/HandheldCompanion/Platforms/LibreHardwareMonitor.cs @@ -8,7 +8,6 @@ namespace HandheldCompanion.Platforms public class LibreHardwareMonitor : IPlatform { private Computer computer; - private string ProductName; private Timer updateTimer; private int updateInterval = 1000; @@ -30,8 +29,6 @@ public LibreHardwareMonitor() Name = "LibreHardwareMonitor"; IsInstalled = true; - ProductName = MotherboardInfo.Product; - // watchdog to populate sensors updateTimer = new Timer(updateInterval) { Enabled = false }; updateTimer.Elapsed += UpdateTimer_Elapsed; @@ -175,15 +172,6 @@ private void HandleCPU_Temperatur(ISensor sensor) if (sensor.Name == "CPU Package" || sensor.Name == "Core (Tctl/Tdie)") { CPUTemperatur = (float)sensor.Value; - - // dirty - switch (ProductName) - { - case "Galileo": - CPUTemperatur /= 2.0f; - break; - } - CPUTemperatureChanged?.Invoke(CPUTemperatur); } } diff --git a/HandheldCompanion/Platforms/RTSS.cs b/HandheldCompanion/Platforms/RTSS.cs index 1837fb48c..f199f6484 100644 --- a/HandheldCompanion/Platforms/RTSS.cs +++ b/HandheldCompanion/Platforms/RTSS.cs @@ -194,7 +194,7 @@ private async void ProcessManager_ForegroundChanged(ProcessEx? processEx, Proces } catch { } - await Task.Delay(1000); + await Task.Delay(1000).ConfigureAwait(false); // Avoid blocking the synchronization context } while (appEntry is null && foregroundId == ProcessId && KeepAlive); if (appEntry is null) diff --git a/HandheldCompanion/Platforms/Steam.cs b/HandheldCompanion/Platforms/Steam.cs index 0f02daf72..2a8bef03e 100644 --- a/HandheldCompanion/Platforms/Steam.cs +++ b/HandheldCompanion/Platforms/Steam.cs @@ -97,7 +97,7 @@ private void ActiveUserWatcher_RegistryChanged(object? sender, RegistryChangedEv private async void ActiveFileWatch_Changed() { - await Task.Delay(1000); + await Task.Delay(1000).ConfigureAwait(false); // Avoid blocking the synchronization context int SteamInput = GetUseSteamControllerConfigValue(); base.SettingsValueChaned("UseSteamControllerConfig", SteamInput); } diff --git a/HandheldCompanion/Sensors/SerialUSBIMU.cs b/HandheldCompanion/Sensors/SerialUSBIMU.cs index 5aec3a058..a0a8817f0 100644 --- a/HandheldCompanion/Sensors/SerialUSBIMU.cs +++ b/HandheldCompanion/Sensors/SerialUSBIMU.cs @@ -143,7 +143,7 @@ public async void Open() tentative++; LogManager.LogError("{0} could not connect. Attempt: {1} out of {2}", serial.ToString(), tentative, maxTentative); - await Task.Delay(500); + await Task.Delay(500).ConfigureAwait(false); // Avoid blocking the synchronization context } } @@ -232,7 +232,7 @@ private async void DataReceivedHandler(object sender, SerialDataReceivedEventArg return; } - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context // Address write function code register = 0xA4, 0x03 // Register to read/write save settings 0x05 diff --git a/HandheldCompanion/UI/UIGamepad.cs b/HandheldCompanion/UI/UIGamepad.cs index 71a5a5af6..69273f304 100644 --- a/HandheldCompanion/UI/UIGamepad.cs +++ b/HandheldCompanion/UI/UIGamepad.cs @@ -145,6 +145,7 @@ private void _currentWindow_GotFocus(object sender, RoutedEventArgs e) _focused[window] = false; // raise event + LostFocus?.Invoke(window); } } @@ -620,8 +621,7 @@ private void InputsUpdated(ControllerState controllerState) { // get the associated ComboBox comboBox = ItemsControl.ItemsControlFromItemContainer(focusedElement) as ComboBox; - - if (comboBox.IsDropDownOpen && comboBoxItem.IsEnabled) + if (comboBox is not null && comboBox.IsDropDownOpen && comboBoxItem.IsEnabled) { int idx = comboBox.Items.IndexOf(comboBoxItem); if (idx == -1) @@ -719,8 +719,8 @@ private void InputsUpdated(ControllerState controllerState) case "ComboBoxItem": { - ComboBox comboBox = ItemsControl.ItemsControlFromItemContainer(focusedElement) as ComboBox; - comboBox.IsDropDownOpen = false; + if (ItemsControl.ItemsControlFromItemContainer(focusedElement) is ComboBox comboBox) + comboBox.IsDropDownOpen = false; } return; @@ -876,45 +876,47 @@ private void InputsUpdated(ControllerState controllerState) { if (focusedElement is ComboBoxItem comboBoxItem) { - ComboBox comboBox = ItemsControl.ItemsControlFromItemContainer(focusedElement) as ComboBox; - if (comboBox.IsDropDownOpen) + if (ItemsControl.ItemsControlFromItemContainer(focusedElement) is ComboBox comboBox) { - int idx = comboBox.Items.IndexOf(comboBoxItem); - if (idx == -1) - idx = comboBox.Items.IndexOf(comboBoxItem.Content); - - while (true) // Loop to skip disabled items + if (comboBox.IsDropDownOpen) { - switch (direction) + int idx = comboBox.Items.IndexOf(comboBoxItem); + if (idx == -1) + idx = comboBox.Items.IndexOf(comboBoxItem.Content); + + while (true) // Loop to skip disabled items { - case WPFUtils.Direction.Up: - idx--; + switch (direction) + { + case WPFUtils.Direction.Up: + idx--; + break; + + case WPFUtils.Direction.Down: + idx++; + break; + } + + // Ensure index is within bounds + if (idx < 0 || idx >= comboBox.Items.Count) + { + // We've reached the top or bottom, so stop the loop break; + } - case WPFUtils.Direction.Down: - idx++; - break; - } + // Get the ComboBoxItem at the new index + focusedElement = (ComboBoxItem)comboBox.ItemContainerGenerator.ContainerFromIndex(idx); - // Ensure index is within bounds - if (idx < 0 || idx >= comboBox.Items.Count) - { - // We've reached the top or bottom, so stop the loop - break; - } - - // Get the ComboBoxItem at the new index - focusedElement = (ComboBoxItem)comboBox.ItemContainerGenerator.ContainerFromIndex(idx); + // Check if the focused element is enabled + if (focusedElement != null && focusedElement.IsEnabled) + { + // If the element is enabled, focus it and break out of the loop + Focus(focusedElement, comboBox, true); + break; + } - // Check if the focused element is enabled - if (focusedElement != null && focusedElement.IsEnabled) - { - // If the element is enabled, focus it and break out of the loop - Focus(focusedElement, comboBox, true); - break; + // If the element is not enabled, continue to the next item in the loop } - - // If the element is not enabled, continue to the next item in the loop } } return; diff --git a/HandheldCompanion/UI/UISounds.cs b/HandheldCompanion/UI/UISounds.cs index e51a82875..76fed7394 100644 --- a/HandheldCompanion/UI/UISounds.cs +++ b/HandheldCompanion/UI/UISounds.cs @@ -62,7 +62,7 @@ private static async void SoundTimer_Elapsed(object? sender, ElapsedEventArgs e) // wait here until playback stops or should stop while (waveOut.PlaybackState == PlaybackState.Playing) - await Task.Delay(1); + await Task.Delay(1).ConfigureAwait(false); // Avoid blocking the synchronization context } } } diff --git a/HandheldCompanion/ViewModels/HotkeyViewModel.cs b/HandheldCompanion/ViewModels/HotkeyViewModel.cs index 5c89699cf..04abbc0ab 100644 --- a/HandheldCompanion/ViewModels/HotkeyViewModel.cs +++ b/HandheldCompanion/ViewModels/HotkeyViewModel.cs @@ -466,7 +466,7 @@ public HotkeyViewModel(Hotkey hotkey) { // todo: improve me // we need to make sure the key that was pressed to trigger the listening event isn't recorded - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context InputsManager.StartListening(hotkey.ButtonFlags, InputsChordTarget.Input); }); @@ -485,7 +485,7 @@ public HotkeyViewModel(Hotkey hotkey) { // todo: improve me // we need to make sure the key that was pressed to trigger the listening event isn't recorded - await Task.Delay(100); + await Task.Delay(100).ConfigureAwait(false); // Avoid blocking the synchronization context InputsManager.StartListening(hotkey.ButtonFlags, InputsChordTarget.Output); }); diff --git a/HandheldCompanion/Views/Pages/ControllerPage.xaml.cs b/HandheldCompanion/Views/Pages/ControllerPage.xaml.cs index 28faaad14..53404c8de 100644 --- a/HandheldCompanion/Views/Pages/ControllerPage.xaml.cs +++ b/HandheldCompanion/Views/Pages/ControllerPage.xaml.cs @@ -151,7 +151,7 @@ private void ControllerManager_Working(ControllerManagerStatus status, int attem case ControllerManagerStatus.Succeeded: { dialog.UpdateContent(Properties.Resources.ControllerPage_ControllerManagment_Done); - await Task.Delay(2000); + await Task.Delay(2000); // Captures synchronization context dialog.Hide(); } break; diff --git a/HandheldCompanion/Views/Pages/SettingsPage.xaml.cs b/HandheldCompanion/Views/Pages/SettingsPage.xaml.cs index 9c9cb8f82..12f82ed37 100644 --- a/HandheldCompanion/Views/Pages/SettingsPage.xaml.cs +++ b/HandheldCompanion/Views/Pages/SettingsPage.xaml.cs @@ -410,7 +410,10 @@ private void UpdateManager_Updated(UpdateStatus status, UpdateFile updateFile, o private void B_CheckUpdate_Click(object? sender, RoutedEventArgs? e) { - new Thread(() => { UpdateManager.StartProcess(); }).Start(); + new Thread(() => + { + UpdateManager.StartProcess(); + }).Start(); } private void cB_Language_SelectionChanged(object? sender, SelectionChangedEventArgs? e) @@ -579,8 +582,8 @@ private void cB_QuickToolsDevicePath_SelectionChanged(object sender, SelectionCh if (cB_QuickToolsDevicePath.SelectedItem is DesktopScreen desktopScreen) { - SettingsManager.SetProperty("QuickToolsDevicePath", desktopScreen.DevicePath); SettingsManager.SetProperty("QuickToolsDeviceName", desktopScreen.FriendlyName); + SettingsManager.SetProperty("QuickToolsDevicePath", desktopScreen.DevicePath); } } } \ No newline at end of file diff --git a/HandheldCompanion/Views/SplashScreen.xaml b/HandheldCompanion/Views/SplashScreen.xaml index 64bd50c85..2e2aae93c 100644 --- a/HandheldCompanion/Views/SplashScreen.xaml +++ b/HandheldCompanion/Views/SplashScreen.xaml @@ -12,8 +12,6 @@ Height="450" ui:ThemeManager.IsThemeAware="True" ui:WindowHelper.SystemBackdropType="Mica" - ui:WindowHelper.UseAcrylicBackdrop="True" - ui:WindowHelper.UseAeroBackdrop="True" ui:WindowHelper.UseModernWindowStyle="True" WindowStartupLocation="CenterScreen" mc:Ignorable="d"> @@ -30,10 +28,7 @@ Text="HC" TextAlignment="Center" /> - - - - + + Background="Red" + Foreground="White" /> diff --git a/HandheldCompanion/Views/Windows/MainWindow.xaml.cs b/HandheldCompanion/Views/Windows/MainWindow.xaml.cs index 16670ff12..cb3a9afcf 100644 --- a/HandheldCompanion/Views/Windows/MainWindow.xaml.cs +++ b/HandheldCompanion/Views/Windows/MainWindow.xaml.cs @@ -92,14 +92,11 @@ public MainWindow(FileVersionInfo _fileVersionInfo, Assembly CurrentAssembly) // get last version Version LastVersion = Version.Parse(SettingsManager.GetString("LastVersion")); - bool FirstStart = LastVersion == Version.Parse("0.0.0.0"); - if (FirstStart) - { + bool FirstStart = LastVersion == Version.Parse("0.0.0.0"); #if !DEBUG - SplashScreen.Show(); + SplashScreen.Show(); #endif - } - + InitializeComponent(); this.Tag = "MainWindow"; @@ -522,7 +519,7 @@ private async void OnSystemStatusChanged(SystemManager.SystemStatus status, Syst { // when device resumes from sleep // use device-specific delay - await Task.Delay(CurrentDevice.ResumeDelay); + await Task.Delay(CurrentDevice.ResumeDelay); // Captures synchronization context // resume manager(s) InputsManager.Start(); @@ -554,7 +551,7 @@ private async void OnSystemStatusChanged(SystemManager.SystemStatus status, Syst // when device goes to sleep // suspend manager(s) VirtualManager.Suspend(true); - await Task.Delay(CurrentDevice.ResumeDelay); + await Task.Delay(CurrentDevice.ResumeDelay); // Captures synchronization context TimerManager.Stop(); SensorsManager.Stop(); diff --git a/HandheldCompanion/Views/Windows/OverlayQuickTools.xaml.cs b/HandheldCompanion/Views/Windows/OverlayQuickTools.xaml.cs index f0d4bbcc5..53cb415a1 100644 --- a/HandheldCompanion/Views/Windows/OverlayQuickTools.xaml.cs +++ b/HandheldCompanion/Views/Windows/OverlayQuickTools.xaml.cs @@ -230,6 +230,8 @@ private void UpdateLocation() // Find the corresponding Screen object targetScreen = Screen.AllScreens.FirstOrDefault(screen => screen.DeviceName.Equals(friendlyScreen.screen.DeviceName)); + if (targetScreen is null) + return; // UI thread Application.Current.Dispatcher.Invoke(() => diff --git a/HandheldCompanion/XInputPlus/XInputPlus.cs b/HandheldCompanion/XInputPlus/XInputPlus.cs index cd552ae2f..0d7eb50f1 100644 --- a/HandheldCompanion/XInputPlus/XInputPlus.cs +++ b/HandheldCompanion/XInputPlus/XInputPlus.cs @@ -146,7 +146,7 @@ private static async void ProcessManager_ProcessStarted(ProcessEx processEx, boo if (attempt == 10) return; - await Task.Delay(500); + await Task.Delay(500).ConfigureAwait(false); // Avoid blocking the synchronization context } bool x64bit = Is64bitProcess(processEx.Process); diff --git a/hidapi.net/HidDevice.cs b/hidapi.net/HidDevice.cs index e3d9db31e..81f0355ce 100644 --- a/hidapi.net/HidDevice.cs +++ b/hidapi.net/HidDevice.cs @@ -86,7 +86,7 @@ public byte[] Read(int timeout = 100) } public Task ReadAsync(byte[] data) => Task.Run(() => Read(data)); - public int Read(byte[] buffer, int timeout = 100) + public int Read(byte[] buffer, int timeout = 20) { if (buffer.Length < _inputBufferLen) throw new ArgumentException("Buffer length is lower than input buffer length."); @@ -161,7 +161,8 @@ public void BeginRead() _reading = true; _readThread = new Thread(new ThreadStart(ReadLoop)) { - IsBackground = true + IsBackground = true, + Priority = ThreadPriority.Highest }; _readThread.Start(); } diff --git a/hidapi.net/hidapi.dll b/hidapi.net/hidapi.dll index 02145e5d0052b44ccb6ae13827f005d1a564dcaf..4eded6eeb17e7dee808e4ef77b902532d9cffa69 100644 GIT binary patch literal 162304 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 z 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 literal 18432 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 Task.Run(() => OnInputReceived(input)) + OnInputReceived = input => + { + OnInputReceived(input); + return Task.CompletedTask; + } }; } diff --git a/steam-hidapi.net/NeptuneController.cs b/steam-hidapi.net/NeptuneController.cs index 017a5a73b..56201ede6 100644 --- a/steam-hidapi.net/NeptuneController.cs +++ b/steam-hidapi.net/NeptuneController.cs @@ -18,7 +18,11 @@ public NeptuneController(ushort vid, ushort pid, short index) : base(vid, pid, i { _hidDevice = new HidDevice(_vid, _pid, 64, index) { - OnInputReceived = input => Task.Run(() => OnInputReceived(input)) + OnInputReceived = input => + { + OnInputReceived(input); + return Task.CompletedTask; + } }; } @@ -76,7 +80,7 @@ internal async void ConfigureLoop() while (_active) { SetLizardMode(_lizard); - await Task.Delay(1000); + await Task.Delay(1000).ConfigureAwait(false); } }