From feff220a9bbc5428ecdff707c85e02abda4c01ba Mon Sep 17 00:00:00 2001
From: Serge <5920850+seerge@users.noreply.github.com>
Date: Mon, 3 Jul 2023 20:56:14 +0200
Subject: [PATCH] Adjust power modes only when needed
---
app/GHelper.csproj | 2 +-
app/Mode/ModeControl.cs | 2 +-
app/Mode/PowerNative.cs | 30 ++++++++++++++++++------------
3 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/app/GHelper.csproj b/app/GHelper.csproj
index 323bb1c4..13043e37 100644
--- a/app/GHelper.csproj
+++ b/app/GHelper.csproj
@@ -16,7 +16,7 @@
AnyCPU
False
True
- 0.93
+ 0.94
diff --git a/app/Mode/ModeControl.cs b/app/Mode/ModeControl.cs
index c85d9c15..07945f84 100644
--- a/app/Mode/ModeControl.cs
+++ b/app/Mode/ModeControl.cs
@@ -89,7 +89,7 @@ namespace GHelper.Mode
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
}
- BatteryControl.SetBatteryChargeLimit();
+ //BatteryControl.SetBatteryChargeLimit();
/*
if (NativeMethods.PowerGetEffectiveOverlayScheme(out Guid activeScheme) == 0)
diff --git a/app/Mode/PowerNative.cs b/app/Mode/PowerNative.cs
index 4153edb2..de323b4e 100644
--- a/app/Mode/PowerNative.cs
+++ b/app/Mode/PowerNative.cs
@@ -122,21 +122,27 @@ namespace GHelper.Mode
public static void SetPowerScheme(string scheme)
{
List overlays = new() {
- "00000000-0000-0000-0000-000000000000",
- "ded574b5-45a0-4f42-8737-46345c09c238",
- "961cc777-2547-4f9d-8174-7d86181b8a7a",
- "3af9B8d9-7c97-431d-ad78-34a8bfea439f"
- };
+ "00000000-0000-0000-0000-000000000000",
+ "ded574b5-45a0-4f42-8737-46345c09c238",
+ "961cc777-2547-4f9d-8174-7d86181b8a7a",
+ "3af9B8d9-7c97-431d-ad78-34a8bfea439f"
+ };
+
+ Guid guidScheme = new Guid(scheme);
if (overlays.Contains(scheme))
{
- PowerSetActiveOverlayScheme(new Guid(scheme));
- Logger.WriteLine("Power mode:" + scheme);
+ uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
+ if (status != 0 || activeScheme != guidScheme)
+ {
+ PowerSetActiveOverlayScheme(guidScheme);
+ Logger.WriteLine("Power mode: " + scheme);
+ }
}
else
{
- PowerSetActiveScheme(IntPtr.Zero, new Guid(scheme));
- Logger.WriteLine("Power plan:" + scheme);
+ PowerSetActiveScheme(IntPtr.Zero, guidScheme);
+ Logger.WriteLine("Power plan: " + scheme);
}
@@ -147,13 +153,13 @@ namespace GHelper.Mode
switch (mode)
{
case 0: // balanced
- PowerSetActiveOverlayScheme(new Guid("00000000-0000-0000-0000-000000000000"));
+ SetPowerScheme("00000000-0000-0000-0000-000000000000");
break;
case 1: // turbo
- PowerSetActiveOverlayScheme(new Guid("ded574b5-45a0-4f42-8737-46345c09c238"));
+ SetPowerScheme("ded574b5-45a0-4f42-8737-46345c09c238");
break;
case 2: //silent
- PowerSetActiveOverlayScheme(new Guid("961cc777-2547-4f9d-8174-7d86181b8a7a"));
+ SetPowerScheme("961cc777-2547-4f9d-8174-7d86181b8a7a");
break;
}
}