From 97c97e8e19bcc8a369c425bed4e2e24c940ed564 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Thu, 11 May 2023 10:52:40 +0200 Subject: [PATCH] Eco tweaks --- app/Extra.Designer.cs | 1 + app/Gpu/NvidiaGpuControl.cs | 6 ++++-- app/HardwareControl.cs | 7 +++---- app/Settings.cs | 29 +++++++++++++++-------------- 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/Extra.Designer.cs b/app/Extra.Designer.cs index 41e73509..76a6cdcb 100644 --- a/app/Extra.Designer.cs +++ b/app/Extra.Designer.cs @@ -234,6 +234,7 @@ namespace GHelper // numericBacklightTime // numericBacklightTime.Location = new Point(477, 131); + numericBacklightTime.Maximum = new decimal(new int[] { 3600, 0, 0, 0 }); numericBacklightTime.Name = "numericBacklightTime"; numericBacklightTime.Size = new Size(240, 39); numericBacklightTime.TabIndex = 47; diff --git a/app/Gpu/NvidiaGpuControl.cs b/app/Gpu/NvidiaGpuControl.cs index be3a51be..f45f01f2 100644 --- a/app/Gpu/NvidiaGpuControl.cs +++ b/app/Gpu/NvidiaGpuControl.cs @@ -90,10 +90,10 @@ public class NvidiaGpuControl : IGpuControl } - public void RestartGPU() + public bool RestartGPU() { - if (!IsValid) return; + if (!IsValid) return false; try { @@ -104,10 +104,12 @@ public class NvidiaGpuControl : IGpuControl Thread.Sleep(3000); RunCMD("pnputil", $"/enable-device /deviceid \"{pnpDeviceId}\""); Thread.Sleep(2000); + return true; } catch (Exception ex ) { Logger.WriteLine(ex.ToString()); + return false; } } diff --git a/app/HardwareControl.cs b/app/HardwareControl.cs index de1b274b..11906250 100644 --- a/app/HardwareControl.cs +++ b/app/HardwareControl.cs @@ -81,9 +81,9 @@ public static class HardwareControl cpuTemp = ct.NextValue() - 273; } } - catch + catch (Exception ex) { - Debug.WriteLine("Failed reading CPU temp"); + Debug.WriteLine("Failed reading CPU temp :" + ex.Message); } try @@ -94,8 +94,7 @@ public static class HardwareControl catch (Exception ex) { gpuTemp = -1; - Debug.WriteLine("Failed reading GPU temp"); - Debug.WriteLine(ex.ToString()); + Debug.WriteLine("Failed reading GPU temp :" + ex.Message); } if (gpuTemp is null || gpuTemp < 0) diff --git a/app/Settings.cs b/app/Settings.cs index d08f2a97..e8fa371a 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -1453,19 +1453,20 @@ namespace GHelper } - public void RestartGPU() + public bool RestartGPU() { - if (HardwareControl.GpuControl is null) return; - if (!HardwareControl.GpuControl!.IsNvidia) return; + if (HardwareControl.GpuControl is null) return false; + if (!HardwareControl.GpuControl!.IsNvidia) return false; - DialogResult dialogResult = MessageBox.Show("Something is using dGPU. Restart it in a device manager and try to set Eco again?", Properties.Strings.EcoMode, MessageBoxButtons.YesNo); - if (dialogResult == DialogResult.No) return; + DialogResult dialogResult = MessageBox.Show("Something is using dGPU and blocking Eco mode. Restart dGPU in a device manager and try to set Eco again?", Properties.Strings.EcoMode, MessageBoxButtons.YesNo); + if (dialogResult == DialogResult.No) return false; Program.RunAsAdmin(); Logger.WriteLine("Trying to restart GPU"); var nvControl = (NvidiaGpuControl)HardwareControl.GpuControl; - nvControl.RestartGPU(); + return nvControl.RestartGPU(); + } public void SetGPUEco(int eco, bool hardWay = false) @@ -1480,24 +1481,24 @@ namespace GHelper Task.Run(async () => { - + + int status; + if (eco == 1) { string[] tokill = { "EADesktop", "RadeonSoftware" }; foreach (string kill in tokill) foreach (var process in Process.GetProcessesByName(kill)) process.Kill(); - } + } - int status = Program.wmi.SetGPUEco(eco); + status = Program.wmi.SetGPUEco(eco); if (status == 0 && eco == 1 && hardWay) { - RestartGPU(); - Program.wmi.SetGPUEco(eco); + if (RestartGPU()) Program.wmi.SetGPUEco(1); } - - await Task.Delay(TimeSpan.FromSeconds(1)); + await Task.Delay(TimeSpan.FromMilliseconds(500)); Program.settingsForm.BeginInvoke(delegate { InitGPUMode(); @@ -1506,7 +1507,7 @@ namespace GHelper if (eco == 0) { - await Task.Delay(TimeSpan.FromSeconds(1)); + await Task.Delay(TimeSpan.FromMilliseconds(1000)); HardwareControl.RecreateGpuControl(); SetGPUClocks(false); }