Adjust power modes only when needed

This commit is contained in:
Serge
2023-07-03 20:56:14 +02:00
parent 5b08bfbe92
commit feff220a9b
3 changed files with 20 additions and 14 deletions

View File

@@ -16,7 +16,7 @@
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly> <ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks> <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.93</AssemblyVersion> <AssemblyVersion>0.94</AssemblyVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -89,7 +89,7 @@ namespace GHelper.Mode
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost")); PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
} }
BatteryControl.SetBatteryChargeLimit(); //BatteryControl.SetBatteryChargeLimit();
/* /*
if (NativeMethods.PowerGetEffectiveOverlayScheme(out Guid activeScheme) == 0) if (NativeMethods.PowerGetEffectiveOverlayScheme(out Guid activeScheme) == 0)

View File

@@ -122,21 +122,27 @@ namespace GHelper.Mode
public static void SetPowerScheme(string scheme) public static void SetPowerScheme(string scheme)
{ {
List<string> overlays = new() { List<string> overlays = new() {
"00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000",
"ded574b5-45a0-4f42-8737-46345c09c238", "ded574b5-45a0-4f42-8737-46345c09c238",
"961cc777-2547-4f9d-8174-7d86181b8a7a", "961cc777-2547-4f9d-8174-7d86181b8a7a",
"3af9B8d9-7c97-431d-ad78-34a8bfea439f" "3af9B8d9-7c97-431d-ad78-34a8bfea439f"
}; };
Guid guidScheme = new Guid(scheme);
if (overlays.Contains(scheme)) if (overlays.Contains(scheme))
{ {
PowerSetActiveOverlayScheme(new Guid(scheme)); uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
Logger.WriteLine("Power mode:" + scheme); if (status != 0 || activeScheme != guidScheme)
{
PowerSetActiveOverlayScheme(guidScheme);
Logger.WriteLine("Power mode: " + scheme);
}
} }
else else
{ {
PowerSetActiveScheme(IntPtr.Zero, new Guid(scheme)); PowerSetActiveScheme(IntPtr.Zero, guidScheme);
Logger.WriteLine("Power plan:" + scheme); Logger.WriteLine("Power plan: " + scheme);
} }
@@ -147,13 +153,13 @@ namespace GHelper.Mode
switch (mode) switch (mode)
{ {
case 0: // balanced case 0: // balanced
PowerSetActiveOverlayScheme(new Guid("00000000-0000-0000-0000-000000000000")); SetPowerScheme("00000000-0000-0000-0000-000000000000");
break; break;
case 1: // turbo case 1: // turbo
PowerSetActiveOverlayScheme(new Guid("ded574b5-45a0-4f42-8737-46345c09c238")); SetPowerScheme("ded574b5-45a0-4f42-8737-46345c09c238");
break; break;
case 2: //silent case 2: //silent
PowerSetActiveOverlayScheme(new Guid("961cc777-2547-4f9d-8174-7d86181b8a7a")); SetPowerScheme("961cc777-2547-4f9d-8174-7d86181b8a7a");
break; break;
} }
} }