From 0ecca826521b7cb5bf02a08f53c2be6f7f3b1850 Mon Sep 17 00:00:00 2001
From: Serge <5920850+seerge@users.noreply.github.com>
Date: Sat, 15 Jul 2023 20:13:00 +0200
Subject: [PATCH] Internal screen detection
---
app/Display/ScreenControl.cs | 3 +--
app/Display/ScreenNative.cs | 28 ++++++++++++++++++++++------
app/GHelper.csproj | 2 +-
app/Gpu/GPUModeControl.cs | 2 +-
4 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/app/Display/ScreenControl.cs b/app/Display/ScreenControl.cs
index 3bc98323..7180bcdc 100644
--- a/app/Display/ScreenControl.cs
+++ b/app/Display/ScreenControl.cs
@@ -24,8 +24,8 @@ namespace GHelper.Display
public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1)
{
-
var laptopScreen = ScreenNative.FindLaptopScreen(true);
+
if (laptopScreen is null) return;
if (ScreenNative.GetRefreshRate(laptopScreen) < 0) return;
@@ -66,7 +66,6 @@ namespace GHelper.Display
public void InitScreen()
{
-
var laptopScreen = ScreenNative.FindLaptopScreen();
int frequency = ScreenNative.GetRefreshRate(laptopScreen);
diff --git a/app/Display/ScreenNative.cs b/app/Display/ScreenNative.cs
index c0da638c..70af406f 100644
--- a/app/Display/ScreenNative.cs
+++ b/app/Display/ScreenNative.cs
@@ -118,14 +118,34 @@ namespace GHelper.Display
public const int ENUM_CURRENT_SETTINGS = -1;
public const string defaultDevice = @"\\.\DISPLAY1";
+ static bool? _ultimate = null;
+
+ static bool isUltimate
+ {
+ get
+ {
+ if (_ultimate is null) _ultimate = (Program.acpi.DeviceGet(AsusACPI.GPUMux) == 0);
+ return (bool)_ultimate;
+ }
+ }
+
public static string? FindLaptopScreen(bool log = false)
{
string? laptopScreen = null;
+ var screens = Screen.AllScreens;
+
+ if (!isUltimate)
+ {
+ foreach (var screen in screens )
+ {
+ if (log) Logger.WriteLine(screen.DeviceName);
+ if (screen.DeviceName == defaultDevice) return defaultDevice;
+ }
+ }
try
{
var devices = GetAllDevices().ToArray();
- var screens = Screen.AllScreens;
int count = 0, displayNum = -1;
@@ -147,11 +167,7 @@ namespace GHelper.Display
count = 0;
foreach (var screen in screens)
{
- if (count == displayNum)
- {
- laptopScreen = screen.DeviceName;
- }
- //if (log) Logger.WriteLine(screen.DeviceName);
+ if (count == displayNum) laptopScreen = screen.DeviceName;
count++;
}
diff --git a/app/GHelper.csproj b/app/GHelper.csproj
index 91f89fa3..ba1ca70f 100644
--- a/app/GHelper.csproj
+++ b/app/GHelper.csproj
@@ -16,7 +16,7 @@
AnyCPU
False
True
- 0.97
+ 0.98
diff --git a/app/Gpu/GPUModeControl.cs b/app/Gpu/GPUModeControl.cs
index 7f548d4c..e437066b 100644
--- a/app/Gpu/GPUModeControl.cs
+++ b/app/Gpu/GPUModeControl.cs
@@ -36,7 +36,7 @@ namespace GHelper.Gpu
else
GpuMode = AsusACPI.GPUModeStandard;
- // Ultimate mode not suported
+ // Ultimate mode not supported
if (mux != 1) settings.HideUltimateMode();
// GPU mode not supported
if (eco < 0 && mux < 0) settings.HideGPUModes();