From 205673715cf03fc11d72c668d974178aecd01a17 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 14 Apr 2021 20:49:26 +0100 Subject: [PATCH] MinGW32: Fix EnumDisplayMonitors callback calling convention compile error --- src/video/win32_v.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index ee2a18e3d9..5711d9d6b9 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -918,24 +918,27 @@ void VideoDriver_Win32Base::EditBoxLostFocus() SetCandidatePos(this->main_wnd); } +BOOL CALLBACK EnumDisplayMonitorsCallback(HMONITOR hMonitor, HDC hDC, LPRECT rc, LPARAM data) +{ + auto &list = *reinterpret_cast*>(data); + + MONITORINFOEX monitorInfo = {}; + monitorInfo.cbSize = sizeof(MONITORINFOEX); + GetMonitorInfo(hMonitor, &monitorInfo); + + DEVMODE devMode = {}; + devMode.dmSize = sizeof(DEVMODE); + devMode.dmDriverExtra = 0; + EnumDisplaySettings(monitorInfo.szDevice, ENUM_CURRENT_SETTINGS, &devMode); + + if (devMode.dmDisplayFrequency != 0) list.push_back(devMode.dmDisplayFrequency); + return true; +} + std::vector VideoDriver_Win32Base::GetListOfMonitorRefreshRates() { std::vector rates = {}; - EnumDisplayMonitors(nullptr, nullptr, [](HMONITOR hMonitor, HDC hDC, LPRECT rc, LPARAM data) -> BOOL { - auto &list = *reinterpret_cast*>(data); - - MONITORINFOEX monitorInfo = {}; - monitorInfo.cbSize = sizeof(MONITORINFOEX); - GetMonitorInfo(hMonitor, &monitorInfo); - - DEVMODE devMode = {}; - devMode.dmSize = sizeof(DEVMODE); - devMode.dmDriverExtra = 0; - EnumDisplaySettings(monitorInfo.szDevice, ENUM_CURRENT_SETTINGS, &devMode); - - if (devMode.dmDisplayFrequency != 0) list.push_back(devMode.dmDisplayFrequency); - return true; - }, reinterpret_cast(&rates)); + EnumDisplayMonitors(nullptr, nullptr, (MONITORENUMPROC)&EnumDisplayMonitorsCallback, reinterpret_cast(&rates)); return rates; }