mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-01-05 17:21:00 +00:00
- treat 'vid_adapter 0' as what Windows considers the primary monitor.
Courtesy of https://devblogs.microsoft.com/oldnewthing/20070809-00/?p=25643
This commit is contained in:
parent
b550f57ce3
commit
f783a94835
1 changed files with 25 additions and 14 deletions
|
@ -48,7 +48,7 @@
|
||||||
#include "win32basevideo.h"
|
#include "win32basevideo.h"
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
|
|
||||||
CVAR(Int, vid_adapter, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CVAR(Int, vid_adapter, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
|
@ -69,6 +69,12 @@ Win32BaseVideo::Win32BaseVideo()
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
|
HMONITOR GetPrimaryMonitorHandle()
|
||||||
|
{
|
||||||
|
const POINT ptZero = { 0, 0 };
|
||||||
|
return MonitorFromPoint(ptZero, MONITOR_DEFAULTTOPRIMARY);
|
||||||
|
}
|
||||||
|
|
||||||
struct MonitorEnumState
|
struct MonitorEnumState
|
||||||
{
|
{
|
||||||
int curIdx;
|
int curIdx;
|
||||||
|
@ -116,24 +122,29 @@ void Win32BaseVideo::GetDisplayDeviceName()
|
||||||
mes.curIdx = 1;
|
mes.curIdx = 1;
|
||||||
mes.hFoundMonitor = nullptr;
|
mes.hFoundMonitor = nullptr;
|
||||||
|
|
||||||
// Could also use EnumDisplayDevices, I guess. That might work.
|
if (vid_adapter == 0)
|
||||||
if (EnumDisplayMonitors(0, 0, &GetDisplayDeviceNameMonitorEnumProc, LPARAM(&mes)))
|
|
||||||
{
|
{
|
||||||
if (mes.hFoundMonitor)
|
mes.hFoundMonitor = GetPrimaryMonitorHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Could also use EnumDisplayDevices, I guess. That might work.
|
||||||
|
else EnumDisplayMonitors(0, 0, &GetDisplayDeviceNameMonitorEnumProc, LPARAM(&mes));
|
||||||
|
|
||||||
|
if (mes.hFoundMonitor)
|
||||||
|
{
|
||||||
|
MONITORINFOEXA mi;
|
||||||
|
|
||||||
|
mi.cbSize = sizeof mi;
|
||||||
|
|
||||||
|
if (GetMonitorInfoA(mes.hFoundMonitor, &mi))
|
||||||
{
|
{
|
||||||
MONITORINFOEXA mi;
|
strcpy(m_DisplayDeviceBuffer, mi.szDevice);
|
||||||
|
m_DisplayDeviceName = m_DisplayDeviceBuffer;
|
||||||
|
|
||||||
mi.cbSize = sizeof mi;
|
m_hMonitor = mes.hFoundMonitor;
|
||||||
|
|
||||||
if (GetMonitorInfoA(mes.hFoundMonitor, &mi))
|
|
||||||
{
|
|
||||||
strcpy(m_DisplayDeviceBuffer, mi.szDevice);
|
|
||||||
m_DisplayDeviceName = m_DisplayDeviceBuffer;
|
|
||||||
|
|
||||||
m_hMonitor = mes.hFoundMonitor;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
Loading…
Reference in a new issue