mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-28 07:48:37 -04:00
windisplay: Add debug prints listing display devices and monitors
This commit is contained in:
parent
3f901243f2
commit
aab149e75a
@ -259,6 +259,71 @@ WinGraphicsPipe() {
|
||||
}
|
||||
}
|
||||
|
||||
if (windisplay_cat.is_debug()) {
|
||||
windisplay_cat.debug()
|
||||
<< "Detected display devices:\n";
|
||||
|
||||
DISPLAY_DEVICEA device;
|
||||
device.cb = sizeof(device);
|
||||
for (DWORD devnum = 0; EnumDisplayDevicesA(nullptr, devnum, &device, 0); ++devnum) {
|
||||
std::ostream &out = windisplay_cat.debug();
|
||||
out << " " << device.DeviceName << " [" << device.DeviceString << "]";
|
||||
if (device.StateFlags & DISPLAY_DEVICE_ACTIVE) {
|
||||
out << " (active)";
|
||||
}
|
||||
if (device.StateFlags & DISPLAY_DEVICE_MULTI_DRIVER) {
|
||||
out << " (multi-driver)";
|
||||
}
|
||||
if (device.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) {
|
||||
out << " (primary)";
|
||||
}
|
||||
if (device.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER) {
|
||||
out << " (mirroring)";
|
||||
}
|
||||
if (device.StateFlags & DISPLAY_DEVICE_REMOVABLE) {
|
||||
out << " (removable)";
|
||||
}
|
||||
out << "\n";
|
||||
}
|
||||
|
||||
int nmonitor = GetSystemMetrics(SM_CMONITORS);
|
||||
windisplay_cat.debug()
|
||||
<< "Detected " << nmonitor << " monitors, "
|
||||
<< (GetSystemMetrics(SM_SAMEDISPLAYFORMAT) != 0 ? "" : "NOT ")
|
||||
<< "sharing same display format:\n";
|
||||
|
||||
EnumDisplayMonitors(
|
||||
nullptr,
|
||||
nullptr,
|
||||
[](HMONITOR monitor, HDC dc, LPRECT rect, LPARAM param) -> BOOL {
|
||||
MONITORINFOEXA info;
|
||||
info.cbSize = sizeof(info);
|
||||
if (GetMonitorInfoA(monitor, &info)) {
|
||||
std::ostream &out = windisplay_cat.debug() << " ";
|
||||
|
||||
DISPLAY_DEVICEA device;
|
||||
device.cb = sizeof(device);
|
||||
device.StateFlags = 0;
|
||||
if (EnumDisplayDevicesA(info.szDevice, 0, &device, 0)) {
|
||||
out << device.DeviceName << " [" << device.DeviceString << "]";
|
||||
}
|
||||
else {
|
||||
out << info.szDevice << " (device enum failed)";
|
||||
}
|
||||
|
||||
if (info.dwFlags & MONITORINFOF_PRIMARY) {
|
||||
out << " (primary)";
|
||||
}
|
||||
if (info.rcWork.left != 0 || info.rcWork.top != 0) {
|
||||
out << " (at " << info.rcWork.left << "x" << info.rcWork.top << ")";
|
||||
}
|
||||
out << "\n";
|
||||
}
|
||||
return TRUE;
|
||||
},
|
||||
0);
|
||||
}
|
||||
|
||||
#ifdef HAVE_DX9
|
||||
// Use D3D to get display info. This is disabled by default as it is slow.
|
||||
if (request_dxdisplay_information) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user