Bugfix : handle localised default monitor names

If your OS is not in English you won't have "Generic PnP Monitor" so the test will succeed inspite of having a localised default monitor name.

I changed the test to look for the output port between parenthesis as this is how the monitor will look like when driver is installed AFAICT.
This commit is contained in:
Scr3amer 2023-09-26 08:48:57 -04:00 committed by GitHub
parent 31746105e8
commit 297582cc09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -129,6 +129,14 @@ EARLY_ABORT_ACCURATE_MONITOR_NAME:
return retval; return retval;
} }
BOOL nameContainsOutputPort(const char *const i_nameToCheck)
{
const size_t nameLength = strlen(i_nameToCheck);
const char lastChar = i_nameToCheck[nameLength - 1];
return lastChar == ')'; // Non generic initial names contain the output port use. E.g. MonitorName(DisplayPort)
}
// Callback for EnumDisplayMonitors in createMonitor // Callback for EnumDisplayMonitors in createMonitor
// //
static BOOL CALLBACK monitorCallback(HMONITOR handle, static BOOL CALLBACK monitorCallback(HMONITOR handle,
@ -149,7 +157,7 @@ static BOOL CALLBACK monitorCallback(HMONITOR handle,
{ {
monitor->win32.handle = handle; monitor->win32.handle = handle;
if (strcmp(monitor->name, "Generic PnP Monitor") == 0) if (!nameContainsOutputPort(monitor->name))
{ {
possiblyMoreAccurateMonitorName = getAccurateMonitorName(mi.szDevice); possiblyMoreAccurateMonitorName = getAccurateMonitorName(mi.szDevice);
if(possiblyMoreAccurateMonitorName != NULL) if(possiblyMoreAccurateMonitorName != NULL)