diff --git a/app/ASUSWmi.cs b/app/ASUSWmi.cs index e1fe8873..3d805171 100644 --- a/app/ASUSWmi.cs +++ b/app/ASUSWmi.cs @@ -20,6 +20,7 @@ public class ASUSWmi public const uint BatteryLimit = 0x00120057; public const uint ScreenOverdrive = 0x00050019; + public const uint ScreenMiniled = 0x0005001E; public const uint DevsCPUFanCurve = 0x00110024; public const uint DevsGPUFanCurve = 0x00110025; diff --git a/app/AppConfig.cs b/app/AppConfig.cs index 2ff13450..9ca09826 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -1,5 +1,4 @@ -using System.Diagnostics; -using System.Management; +using System.Management; using System.Text.Json; public class AppConfig diff --git a/app/GHelper.csproj b/app/GHelper.csproj index 2bcf0ea4..5172bad3 100644 --- a/app/GHelper.csproj +++ b/app/GHelper.csproj @@ -16,7 +16,7 @@ x64 False True - 0.33 + 0.34 @@ -51,15 +51,6 @@ - - - ..\..\.nuget\packages\microsoft.management.infrastructure\2.0.0\ref\net451\Microsoft.Management.Infrastructure.dll - - - ..\..\.nuget\packages\microsoft.management.infrastructure.runtime.win\2.0.0\runtimes\win10-x64\lib\netstandard1.6\Microsoft.Management.Infrastructure.Native.dll - - - Never diff --git a/app/Program.cs b/app/Program.cs index 8e1f7027..9956db8a 100644 --- a/app/Program.cs +++ b/app/Program.cs @@ -112,7 +112,7 @@ namespace GHelper } - public static void SetAutoModes() + public static void SetAutoModes(bool wait = false) { if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 1000) return; @@ -126,6 +126,9 @@ namespace GHelper settingsForm.AutoPerformance(isPlugged); + // waiting a bit before turning off dGPU + // if (wait && isPlugged != PowerLineStatus.Online) Thread.Sleep(3000); + bool switched = settingsForm.AutoGPUMode(isPlugged); if (!switched) settingsForm.AutoScreen(isPlugged); @@ -135,7 +138,7 @@ namespace GHelper private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) { Logger.WriteLine("Windows - Power Mode Changed"); - SetAutoModes(); + SetAutoModes(true); } diff --git a/app/Settings.Designer.cs b/app/Settings.Designer.cs index 890206a9..25657ba0 100644 --- a/app/Settings.Designer.cs +++ b/app/Settings.Designer.cs @@ -85,6 +85,7 @@ namespace GHelper buttonKeyboardColor = new Button(); pictureKeyboard = new PictureBox(); labelKeyboard = new Label(); + buttonMiniled = new RoundedButton(); panelMatrix.SuspendLayout(); tableLayoutMatrix.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureMatrix).BeginInit(); @@ -686,6 +687,7 @@ namespace GHelper tableScreen.Controls.Add(buttonScreenAuto, 0, 0); tableScreen.Controls.Add(button60Hz, 1, 0); tableScreen.Controls.Add(button120Hz, 2, 0); + tableScreen.Location = new Point(16, 51); tableScreen.Margin = new Padding(8, 4, 8, 4); tableScreen.Name = "tableScreen"; @@ -721,7 +723,7 @@ namespace GHelper button60Hz.FlatAppearance.BorderSize = 0; button60Hz.FlatStyle = FlatStyle.Flat; button60Hz.ForeColor = SystemColors.ControlText; - button60Hz.Location = new Point(197, 4); + button60Hz.Location = new Point(390, 4); button60Hz.Margin = new Padding(4); button60Hz.Name = "button60Hz"; button60Hz.Size = new Size(185, 72); @@ -738,7 +740,7 @@ namespace GHelper button120Hz.FlatAppearance.BorderSize = 0; button120Hz.FlatStyle = FlatStyle.Flat; button120Hz.ForeColor = SystemColors.ControlText; - button120Hz.Location = new Point(390, 4); + button120Hz.Location = new Point(583, 4); button120Hz.Margin = new Padding(4); button120Hz.Name = "button120Hz"; button120Hz.Size = new Size(185, 72); @@ -901,6 +903,24 @@ namespace GHelper labelKeyboard.TabIndex = 32; labelKeyboard.Text = "Laptop Keyboard"; // + // buttonMiniled + // + buttonMiniled.Activated = false; + buttonMiniled.BackColor = SystemColors.ControlLightLight; + buttonMiniled.BorderColor = Color.Transparent; + buttonMiniled.CausesValidation = false; + buttonMiniled.Dock = DockStyle.Fill; + buttonMiniled.FlatAppearance.BorderSize = 0; + buttonMiniled.FlatStyle = FlatStyle.Flat; + buttonMiniled.ForeColor = SystemColors.ControlText; + buttonMiniled.Location = new Point(197, 4); + buttonMiniled.Margin = new Padding(4); + buttonMiniled.Name = "buttonMiniled"; + buttonMiniled.Size = new Size(185, 72); + buttonMiniled.TabIndex = 3; + buttonMiniled.Text = "Miniled"; + buttonMiniled.UseVisualStyleBackColor = false; + // // SettingsForm // AutoScaleDimensions = new SizeF(192F, 192F); @@ -1015,5 +1035,6 @@ namespace GHelper private RoundedButton buttonOptimized; private Label labelTipGPU; private Label labelTipScreen; + private RoundedButton buttonMiniled; } } \ No newline at end of file diff --git a/app/Settings.cs b/app/Settings.cs index c03920a2..5f1b64f9 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -45,6 +45,7 @@ namespace GHelper button60Hz.BorderColor = SystemColors.ActiveBorder; button120Hz.BorderColor = SystemColors.ActiveBorder; buttonScreenAuto.BorderColor = SystemColors.ActiveBorder; + buttonMiniled.BorderColor = colorTurbo; buttonOptimized.Click += ButtonOptimized_Click; buttonSilent.Click += ButtonSilent_Click; @@ -62,6 +63,7 @@ namespace GHelper button60Hz.Click += Button60Hz_Click; button120Hz.Click += Button120Hz_Click; buttonScreenAuto.Click += ButtonScreenAuto_Click; + buttonMiniled.Click += ButtonMiniled_Click; buttonQuit.Click += ButtonQuit_Click; @@ -614,13 +616,17 @@ namespace GHelper SetScreen(60, 0); } + private void ButtonMiniled_Click(object? sender, EventArgs e) + { + int miniled = (Program.config.getConfig("miniled") == 1) ? 0 : 1; + Program.config.setConfig("miniled", miniled); + SetScreen(-1, -1, miniled); + } - public void SetScreen(int frequency = -1, int overdrive = -1) + public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1) { - int currentFrequency = NativeMethods.GetRefreshRate(); - - if (currentFrequency < 0) // Laptop screen not detected or has unknown refresh rate + if (NativeMethods.GetRefreshRate() < 0) // Laptop screen not detected or has unknown refresh rate { InitScreen(); return; @@ -629,19 +635,25 @@ namespace GHelper if (frequency >= 1000) { frequency = Program.config.getConfig("max_frequency"); - if (frequency <= 60) - frequency = 120; + if (frequency <= 60) frequency = 120; } - if (frequency <= 0) return; + if (frequency > 0) + { + NativeMethods.SetRefreshRate(frequency); + Logger.WriteLine("Screen " + frequency.ToString() + "Hz"); + } - NativeMethods.SetRefreshRate(frequency); if (overdrive >= 0) Program.wmi.DeviceSet(ASUSWmi.ScreenOverdrive, overdrive); - InitScreen(); + if (miniled >= 0) + { + Program.wmi.DeviceSet(ASUSWmi.ScreenMiniled, miniled); + Debug.WriteLine("Miniled " + miniled); + } - Logger.WriteLine("Screen " + frequency.ToString() + "Hz"); + InitScreen(); } @@ -653,15 +665,8 @@ namespace GHelper bool screenAuto = (Program.config.getConfig("screen_auto") == 1); - int overdrive = 0; - try - { - overdrive = Program.wmi.DeviceGet(ASUSWmi.ScreenOverdrive); - } - catch - { - Logger.WriteLine("Screen Overdrive not supported"); - } + int overdrive = Program.wmi.DeviceGet(ASUSWmi.ScreenOverdrive); + int miniled = Program.wmi.DeviceGet(ASUSWmi.ScreenMiniled); if (frequency < 0) { @@ -711,6 +716,13 @@ namespace GHelper button120Hz.Text = maxFrequency.ToString() + "Hz + OD"; } + if (miniled >= 0) + { + tableScreen.Controls.Add(buttonMiniled, 3, 0); + buttonMiniled.Activated = (miniled == 1); + Program.config.setConfig("miniled", miniled); + } + Program.config.setConfig("frequency", frequency); Program.config.setConfig("overdrive", overdrive); } @@ -1031,12 +1043,13 @@ namespace GHelper } + Program.config.setConfig("gpu_mode", GpuMode); + ButtonEnabled(buttonOptimized, true); ButtonEnabled(buttonEco, true); ButtonEnabled(buttonStandard, true); ButtonEnabled(buttonUltimate, true); - Program.config.setConfig("gpu_mode", GpuMode); VisualiseGPUMode(GpuMode); return GpuMode;