Skip to content

Commit 56eabbe

Browse files
committed
Brightness (Windows): queries monitor description if display name is not available
1 parent b0215aa commit 56eabbe

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

src/detection/brightness/brightness_windows.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ NTSYSAPI NTSTATUS WINAPI DestroyPhysicalMonitorInternal(
3333
_In_ HANDLE hMonitor
3434
);
3535

36+
NTSTATUS WINAPI GetPhysicalMonitorDescription(
37+
_In_ HANDLE hMonitor,
38+
_In_ DWORD dwPhysicalMonitorDescriptionSizeInChars,
39+
_Out_ LPWSTR szPhysicalMonitorDescription
40+
);
41+
3642
static const char* detectWithWmi(FFlist* result)
3743
{
3844
FFWmiQuery query(L"SELECT CurrentBrightness, InstanceName FROM WmiMonitorBrightness WHERE Active = true", nullptr, FFWmiNamespace::WMI);
@@ -91,7 +97,20 @@ static const char* detectWithDdcci(const FFDisplayServerResult* displayServer, F
9197
if (NT_SUCCESS(ffDDCCIGetVCPFeature(physicalMonitor, 0x10 /* luminance */, NULL, &curr, &max)))
9298
{
9399
FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd(result);
94-
ffStrbufInitCopy(&brightness->name, &display->name);
100+
if (display->name.length > 0)
101+
ffStrbufInitCopy(&brightness->name, &display->name);
102+
else
103+
{
104+
FF_LIBRARY_LOAD_SYMBOL_LAZY(gdi32, GetPhysicalMonitorDescription)
105+
if (ffGetPhysicalMonitorDescription)
106+
{
107+
wchar_t description[128 /*MUST be PHYSICAL_MONITOR_DESCRIPTION_SIZE*/];
108+
if (NT_SUCCESS(ffGetPhysicalMonitorDescription(physicalMonitor, ARRAY_SIZE(description), description)))
109+
ffStrbufInitWS(&brightness->name, description);
110+
}
111+
if (brightness->name.length == 0)
112+
ffStrbufSetNWS(&brightness->name, deviceName.Length / 2, deviceName.Buffer);
113+
}
95114
brightness->max = max;
96115
brightness->min = 0;
97116
brightness->current = curr;

0 commit comments

Comments
 (0)