- fixed: GetDisplayDeviceName must always pick a valid monitor.

There is no default here, so if vid_adapter is invalid for whatever reason the engine would crash without a defined setting.
This commit is contained in:
Christoph Oelckers 2019-04-19 07:33:51 +02:00
parent 68597da75d
commit 327a83a54b

View file

@ -90,7 +90,7 @@ static BOOL CALLBACK GetDisplayDeviceNameMonitorEnumProc(HMONITOR hMonitor, HDC,
// This assumes the monitors are returned by EnumDisplayMonitors in the
// order they're found in the Direct3D9 adapters list. Fingers crossed...
if (state->curIdx == vid_adapter)
if (state->curIdx == vid_adapter || state->hFoundMonitor == nullptr)
{
state->hFoundMonitor = hMonitor;
@ -119,7 +119,7 @@ void Win32BaseVideo::GetDisplayDeviceName()
MonitorEnumState mes;
mes.curIdx = 1;
mes.hFoundMonitor = 0;
mes.hFoundMonitor = nullptr;
// Could also use EnumDisplayDevices, I guess. That might work.
if (EnumDisplayMonitors(0, 0, &GetDisplayDeviceNameMonitorEnumProc, LPARAM(&mes)))