Fix for UI lag on GPU switch

This commit is contained in:
seerge
2023-03-10 21:50:20 +01:00
parent 43c6def162
commit 92d1b97b95
5 changed files with 80 additions and 64 deletions

View File

@@ -1,4 +1,5 @@
using System.Diagnostics;
using GHelper;
using System.Diagnostics;
using System.Management;
using System.Runtime.InteropServices;

79
Fans.Designer.cs generated
View File

@@ -66,7 +66,6 @@
//
// panelFans
//
panelFans.AutoSize = true;
panelFans.Controls.Add(checkBoost);
panelFans.Controls.Add(labelFans);
panelFans.Controls.Add(checkAuto);
@@ -75,19 +74,18 @@
panelFans.Controls.Add(buttonApply);
panelFans.Controls.Add(chartCPU);
panelFans.Dock = DockStyle.Left;
panelFans.Location = new Point(363, 0);
panelFans.Margin = new Padding(10);
panelFans.MinimumSize = new Size(872, 1089);
panelFans.Location = new Point(364, 0);
panelFans.Margin = new Padding(10, 10, 10, 10);
panelFans.Name = "panelFans";
panelFans.Padding = new Padding(10);
panelFans.Size = new Size(872, 1089);
panelFans.Padding = new Padding(10, 10, 10, 10);
panelFans.Size = new Size(824, 1092);
panelFans.TabIndex = 12;
//
// checkBoost
//
checkBoost.AutoSize = true;
checkBoost.ForeColor = SystemColors.ControlText;
checkBoost.Location = new Point(512, 15);
checkBoost.Location = new Point(484, 16);
checkBoost.Margin = new Padding(4, 2, 4, 2);
checkBoost.Name = "checkBoost";
checkBoost.Size = new Size(320, 36);
@@ -99,7 +97,8 @@
//
labelFans.AutoSize = true;
labelFans.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelFans.Location = new Point(24, 15);
labelFans.Location = new Point(24, 16);
labelFans.Margin = new Padding(4, 0, 4, 0);
labelFans.Name = "labelFans";
labelFans.Size = new Size(138, 32);
labelFans.TabIndex = 28;
@@ -109,7 +108,7 @@
//
checkAuto.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
checkAuto.AutoSize = true;
checkAuto.Location = new Point(411, 1030);
checkAuto.Location = new Point(383, 1030);
checkAuto.Margin = new Padding(4, 2, 4, 2);
checkAuto.Name = "checkAuto";
checkAuto.Size = new Size(165, 36);
@@ -122,20 +121,20 @@
chartGPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
chartArea1.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1);
chartGPU.Location = new Point(22, 547);
chartGPU.Location = new Point(22, 548);
chartGPU.Margin = new Padding(4, 2, 4, 2);
chartGPU.Name = "chartGPU";
chartGPU.Size = new Size(810, 460);
chartGPU.Size = new Size(784, 460);
chartGPU.TabIndex = 16;
chartGPU.Text = "chart1";
//
// buttonReset
//
buttonReset.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonReset.Location = new Point(22, 1025);
buttonReset.Location = new Point(20, 1024);
buttonReset.Margin = new Padding(4, 2, 4, 2);
buttonReset.Name = "buttonReset";
buttonReset.Size = new Size(231, 44);
buttonReset.Size = new Size(232, 44);
buttonReset.TabIndex = 15;
buttonReset.Text = "Factory Defaults";
buttonReset.UseVisualStyleBackColor = true;
@@ -143,7 +142,7 @@
// buttonApply
//
buttonApply.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonApply.Location = new Point(584, 1025);
buttonApply.Location = new Point(550, 1024);
buttonApply.Margin = new Padding(4, 2, 4, 2);
buttonApply.Name = "buttonApply";
buttonApply.Size = new Size(248, 44);
@@ -157,9 +156,9 @@
chartArea2.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2);
chartCPU.Location = new Point(22, 66);
chartCPU.Margin = new Padding(10);
chartCPU.Margin = new Padding(10, 10, 10, 10);
chartCPU.Name = "chartCPU";
chartCPU.Size = new Size(810, 460);
chartCPU.Size = new Size(780, 460);
chartCPU.TabIndex = 13;
chartCPU.Text = "chartCPU";
//
@@ -175,15 +174,18 @@
panelPower.Controls.Add(labelInfo);
panelPower.Dock = DockStyle.Left;
panelPower.Location = new Point(0, 0);
panelPower.Margin = new Padding(10, 10, 10, 10);
panelPower.Name = "panelPower";
panelPower.Size = new Size(363, 1089);
panelPower.Padding = new Padding(10, 10, 10, 10);
panelPower.Size = new Size(364, 1092);
panelPower.TabIndex = 13;
//
// labelPowerLimits
//
labelPowerLimits.AutoSize = true;
labelPowerLimits.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelPowerLimits.Location = new Point(23, 15);
labelPowerLimits.Location = new Point(24, 18);
labelPowerLimits.Margin = new Padding(4, 0, 4, 0);
labelPowerLimits.Name = "labelPowerLimits";
labelPowerLimits.Size = new Size(229, 32);
labelPowerLimits.TabIndex = 26;
@@ -193,7 +195,7 @@
//
checkApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
checkApplyPower.AutoSize = true;
checkApplyPower.Location = new Point(21, 982);
checkApplyPower.Location = new Point(32, 982);
checkApplyPower.Margin = new Padding(4, 2, 4, 2);
checkApplyPower.Name = "checkApplyPower";
checkApplyPower.Size = new Size(165, 36);
@@ -204,10 +206,10 @@
// buttonApplyPower
//
buttonApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
buttonApplyPower.Location = new Point(17, 1025);
buttonApplyPower.Location = new Point(26, 1024);
buttonApplyPower.Margin = new Padding(4, 2, 4, 2);
buttonApplyPower.Name = "buttonApplyPower";
buttonApplyPower.Size = new Size(321, 44);
buttonApplyPower.Size = new Size(300, 44);
buttonApplyPower.TabIndex = 24;
buttonApplyPower.Text = "Apply Power Limits";
buttonApplyPower.UseVisualStyleBackColor = true;
@@ -217,7 +219,8 @@
panelCPU.Controls.Add(labelCPU);
panelCPU.Controls.Add(label2);
panelCPU.Controls.Add(trackCPU);
panelCPU.Location = new Point(184, 89);
panelCPU.Location = new Point(184, 90);
panelCPU.Margin = new Padding(4, 4, 4, 4);
panelCPU.Name = "panelCPU";
panelCPU.Size = new Size(160, 510);
panelCPU.TabIndex = 23;
@@ -226,7 +229,7 @@
//
labelCPU.AutoSize = true;
labelCPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelCPU.Location = new Point(43, 41);
labelCPU.Location = new Point(44, 40);
labelCPU.Margin = new Padding(4, 0, 4, 0);
labelCPU.Name = "labelCPU";
labelCPU.Size = new Size(61, 32);
@@ -237,7 +240,7 @@
// label2
//
label2.AutoSize = true;
label2.Location = new Point(45, 7);
label2.Location = new Point(44, 8);
label2.Margin = new Padding(4, 0, 4, 0);
label2.Name = "label2";
label2.Size = new Size(58, 32);
@@ -247,7 +250,7 @@
//
// trackCPU
//
trackCPU.Location = new Point(47, 89);
trackCPU.Location = new Point(48, 88);
trackCPU.Margin = new Padding(4, 2, 4, 2);
trackCPU.Maximum = 85;
trackCPU.Minimum = 15;
@@ -263,16 +266,17 @@
panelTotal.Controls.Add(labelTotal);
panelTotal.Controls.Add(label1);
panelTotal.Controls.Add(trackTotal);
panelTotal.Location = new Point(17, 89);
panelTotal.Location = new Point(16, 90);
panelTotal.Margin = new Padding(4, 4, 4, 4);
panelTotal.Name = "panelTotal";
panelTotal.Size = new Size(160, 511);
panelTotal.Size = new Size(160, 512);
panelTotal.TabIndex = 22;
//
// labelTotal
//
labelTotal.AutoSize = true;
labelTotal.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelTotal.Location = new Point(46, 41);
labelTotal.Location = new Point(46, 40);
labelTotal.Margin = new Padding(4, 0, 4, 0);
labelTotal.Name = "labelTotal";
labelTotal.Size = new Size(70, 32);
@@ -283,7 +287,7 @@
// label1
//
label1.AutoSize = true;
label1.Location = new Point(48, 7);
label1.Location = new Point(48, 8);
label1.Margin = new Padding(4, 0, 4, 0);
label1.Name = "label1";
label1.Size = new Size(65, 32);
@@ -293,7 +297,7 @@
//
// trackTotal
//
trackTotal.Location = new Point(44, 89);
trackTotal.Location = new Point(44, 88);
trackTotal.Margin = new Padding(4, 2, 4, 2);
trackTotal.Maximum = 150;
trackTotal.Minimum = 15;
@@ -309,7 +313,7 @@
//
labelApplied.AutoSize = true;
labelApplied.ForeColor = Color.Tomato;
labelApplied.Location = new Point(23, 51);
labelApplied.Location = new Point(24, 54);
labelApplied.Margin = new Padding(4, 0, 4, 0);
labelApplied.Name = "labelApplied";
labelApplied.Size = new Size(143, 32);
@@ -321,10 +325,10 @@
pictureFine.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
pictureFine.BackgroundImageLayout = ImageLayout.Zoom;
pictureFine.Image = Properties.Resources.everything_is_fine_itsfine;
pictureFine.Location = new Point(17, 671);
pictureFine.Location = new Point(20, 666);
pictureFine.Margin = new Padding(4, 2, 4, 2);
pictureFine.Name = "pictureFine";
pictureFine.Size = new Size(327, 254);
pictureFine.Size = new Size(324, 268);
pictureFine.SizeMode = PictureBoxSizeMode.Zoom;
pictureFine.TabIndex = 20;
pictureFine.TabStop = false;
@@ -332,10 +336,10 @@
//
// labelInfo
//
labelInfo.Location = new Point(17, 603);
labelInfo.Location = new Point(24, 604);
labelInfo.Margin = new Padding(4, 0, 4, 0);
labelInfo.Name = "labelInfo";
labelInfo.Size = new Size(327, 330);
labelInfo.Size = new Size(320, 330);
labelInfo.TabIndex = 19;
labelInfo.Text = "label";
//
@@ -344,15 +348,13 @@
AutoScaleDimensions = new SizeF(192F, 192F);
AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(1220, 1089);
ClientSize = new Size(1196, 1092);
Controls.Add(panelFans);
Controls.Add(panelPower);
Margin = new Padding(4, 2, 4, 2);
MaximizeBox = false;
MdiChildrenMinimizedAnchorBottom = false;
MinimizeBox = false;
MinimumSize = new Size(0, 1160);
Name = "Fans";
ShowIcon = false;
ShowInTaskbar = false;
@@ -372,7 +374,6 @@
((System.ComponentModel.ISupportInitialize)trackTotal).EndInit();
((System.ComponentModel.ISupportInitialize)pictureFine).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion

View File

@@ -15,8 +15,8 @@
<AssemblyName>GHelper</AssemblyName>
<PlatformTarget>x64</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AssemblyVersion>0.21</AssemblyVersion>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.23</AssemblyVersion>
</PropertyGroup>
<ItemGroup>

View File

@@ -143,10 +143,6 @@ namespace GHelper
case PBT_APMRESUMEAUTOMATIC:
settingsForm.BeginInvoke(delegate
{
// Setting "other" mode to prevent bios bugging with PPTs after wake up from sleep
wmi.DeviceSet(ASUSWmi.PerformanceMode, config.getConfig("performance_mode"));
Thread.Sleep(1000);
SetAutoModes();
});
break;
@@ -159,7 +155,8 @@ namespace GHelper
static async void CheckForUpdates()
{
settingsForm.SetVersionLabel("Version: " + Assembly.GetExecutingAssembly().GetName().Version.ToString());
var assembly = Assembly.GetExecutingAssembly().GetName().Version.ToString();
settingsForm.SetVersionLabel("Version: " + assembly);
try
{
@@ -170,12 +167,11 @@ namespace GHelper
var config = JsonSerializer.Deserialize<JsonElement>(json);
var tag = config.GetProperty("tag_name").ToString().Replace("v", "");
var url = config.GetProperty("assets")[0].GetProperty("browser_download_url").ToString();
var assembly = Assembly.GetExecutingAssembly().GetName().Version.ToString();
var gitVersion = new Version(tag);
var appVersion = new Version();
var appVersion = new Version(assembly);
var result = appVersion.CompareTo(gitVersion);
var result = gitVersion.CompareTo(appVersion);
if (result > 0)
{
settingsForm.SetVersionLabel("Download Update: " + tag, url);

View File

@@ -60,6 +60,7 @@ namespace GHelper
buttonQuit.Click += ButtonQuit_Click;
checkGPU.CheckedChanged += CheckGPU_CheckedChanged;
checkScreen.CheckedChanged += checkScreen_CheckedChanged;
@@ -96,6 +97,13 @@ namespace GHelper
}
private void CheckGPU_CheckedChanged(object? sender, EventArgs e)
{
if (sender is null) return;
CheckBox check = (CheckBox)sender;
Program.config.setConfig("gpu_auto", check.Checked ? 1 : 0);
}
public void SetVersionLabel(string label, string url = null)
{
labelVersion.Text = label;
@@ -717,8 +725,15 @@ namespace GHelper
if (Program.config.getConfigPerf("auto_apply_power") == 1)
{
SetPower();
var timer = new System.Timers.Timer(500);
timer.Elapsed += delegate
{
SetPower();
timer.Stop();
};
timer.Start();
}
}
public void SetPerformanceMode(int PerformanceMode = ASUSWmi.PerformanceBalanced, bool notify = false)
@@ -822,13 +837,11 @@ namespace GHelper
{
if (eco == 1 && Plugged == PowerLineStatus.Online) // Eco going Standard on plugged
{
Program.wmi.DeviceSet(ASUSWmi.GPUEco, 0);
InitGPUMode();
SetEcoGPU(0);
}
else if (eco == 0 && Plugged != PowerLineStatus.Online) // Standard going Eco on plugged
{
Program.wmi.DeviceSet(ASUSWmi.GPUEco, 1);
InitGPUMode();
SetEcoGPU(1);
}
}
@@ -862,6 +875,18 @@ namespace GHelper
}
public void SetEcoGPU(int eco)
{
new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco);
BeginInvoke(delegate { InitGPUMode(); });
}).Start();
}
public void SetGPUMode(int GPUMode = ASUSWmi.GPUModeStandard)
{
@@ -897,13 +922,13 @@ namespace GHelper
else if (GPUMode == ASUSWmi.GPUModeEco)
{
VisualiseGPUMode(GPUMode);
Program.wmi.DeviceSet(ASUSWmi.GPUEco, 1);
SetEcoGPU(1);
changed = true;
}
else if (GPUMode == ASUSWmi.GPUModeStandard)
{
VisualiseGPUMode(GPUMode);
Program.wmi.DeviceSet(ASUSWmi.GPUEco, 0);
SetEcoGPU(0);
changed = true;
}
@@ -1013,13 +1038,6 @@ namespace GHelper
SetBatteryChargeLimit(bar.Value);
}
private void checkGPU_CheckedChanged(object? sender, EventArgs e)
{
if (sender is null) return;
CheckBox check = (CheckBox)sender;
Program.config.setConfig("gpu_auto", check.Checked ? 1 : 0);
}
private void checkScreen_CheckedChanged(object? sender, EventArgs e)
{