diff --git a/RELEASE.md b/RELEASE.md index 7edcf1e..bfe9ca1 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -23,3 +23,4 @@ - GPU detection will log errors to `Sentry.io` - Support SMU of Vangogh GPU shipped with BIOS 113 - Fix Steam Game detection when in X360 controller mode +- Force to reconnect X360 controller on Resume diff --git a/SteamController/Devices/Xbox360Controller.cs b/SteamController/Devices/Xbox360Controller.cs index 257ec1d..73030a7 100644 --- a/SteamController/Devices/Xbox360Controller.cs +++ b/SteamController/Devices/Xbox360Controller.cs @@ -1,3 +1,4 @@ +using Microsoft.Win32; using Nefarius.ViGEm.Client; using Nefarius.ViGEm.Client.Exceptions; using Nefarius.ViGEm.Client.Targets; @@ -21,13 +22,30 @@ namespace SteamController.Devices public Xbox360Controller() { + Microsoft.Win32.SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; + } + + ~Xbox360Controller() + { + Dispose(); } public void Dispose() { + GC.SuppressFinalize(this); + Microsoft.Win32.SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; using (client) { } } + private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) + { + if (e.Mode == Microsoft.Win32.PowerModes.Resume) + { + // Force to reconnect device on resume + lock (this) { Fail(); } + } + } + internal bool Tick() { if (this.device is not null)