From 139200c1e5839de0ef829d46efd15f69a2e5bef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= Date: Wed, 23 Nov 2022 10:13:16 +0100 Subject: [PATCH] Reset `LibreHardware` on system resume to fix battery bug --- CommonHelpers/Instance.cs | 12 ++++++------ FanControl/FanControlForm.cs | 9 ++------- PerformanceOverlay/Controller.cs | 16 +++++++++++++--- RELEASE.md | 1 + 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/CommonHelpers/Instance.cs b/CommonHelpers/Instance.cs index 152ffa1..0e0afc8 100644 --- a/CommonHelpers/Instance.cs +++ b/CommonHelpers/Instance.cs @@ -38,7 +38,7 @@ namespace CommonHelpers return globalLockMutex; return null; } - catch(AbandonedMutexException) + catch (AbandonedMutexException) { return globalLockMutex; } @@ -69,13 +69,13 @@ namespace CommonHelpers var mutex = WaitGlobalMutex(GLOBAL_DEFAULT_TIMEOUT); + if (mutex is null) + { + Fatal(title, "Failed to acquire global mutex."); + } + try { - if (mutex is null) - { - Fatal(title, "Failed to acquire global mutex."); - } - if (!Vlv0100.IsSupported()) { String message = ""; diff --git a/FanControl/FanControlForm.cs b/FanControl/FanControlForm.cs index 377a8af..7e03716 100644 --- a/FanControl/FanControlForm.cs +++ b/FanControl/FanControlForm.cs @@ -61,7 +61,7 @@ namespace FanControl var fanMode = Enum.Parse(typeof(FanMode), Properties.Settings.Default.FanMode); setFanMode((FanMode)fanMode); } - catch(System.ArgumentException) + catch (System.ArgumentException) { setFanMode(FanMode.Default); } @@ -73,18 +73,13 @@ namespace FanControl Microsoft.Win32.SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; } - protected override void OnClosed(EventArgs e) - { - base.OnClosed(e); - - Microsoft.Win32.SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; - } private void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e) { // Restore fan mode on resume if (e.Mode == Microsoft.Win32.PowerModes.Resume) { + Instance.HardwareComputer.Reset(); fanControl.SetMode(fanControl.Mode); } } diff --git a/PerformanceOverlay/Controller.cs b/PerformanceOverlay/Controller.cs index 4952a35..9ae43cd 100644 --- a/PerformanceOverlay/Controller.cs +++ b/PerformanceOverlay/Controller.cs @@ -36,7 +36,7 @@ namespace PerformanceOverlay public Controller() { contextMenu = new System.Windows.Forms.ContextMenuStrip(components); - + SharedData_Update(); Instance.Open(TitleWithVersion, "Global\\PerformanceOverlay"); @@ -119,6 +119,16 @@ namespace PerformanceOverlay updateContextItems(contextMenu); }); } + + Microsoft.Win32.SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; + } + + private void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e) + { + if (e.Mode == Microsoft.Win32.PowerModes.Resume) + { + Instance.HardwareComputer.Reset(); + } } private void updateContextItems(ContextMenuStrip contextMenu) @@ -126,7 +136,7 @@ namespace PerformanceOverlay foreach (ToolStripItem item in contextMenu.Items) { if (item.Tag is OverlayMode) - ((ToolStripMenuItem)item).Checked = ((OverlayMode)item.Tag == Settings.Default.OSDModeParsed); + ((ToolStripMenuItem)item).Checked = ((OverlayMode)item.Tag == Settings.Default.OSDModeParsed); } showItem.Checked = Settings.Default.ShowOSD; @@ -224,7 +234,7 @@ namespace PerformanceOverlay osd.Update(osdOverlay); } - catch(SystemException) + catch (SystemException) { } } diff --git a/RELEASE.md b/RELEASE.md index 779e80a..63e3f04 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -10,5 +10,6 @@ - Show CPU/GPU frequency in Full overlay - Allow to control GPU Scaling and Display Color Correction - Do not use WinRing0 for GPU detection to control CPU/GPU frequency +- Reset `LibreHardware` on system resume to fix battery bug If you found it useful buy me [Ko-fi](https://ko-fi.com/ayufan).