# HG changeset patch # User glx22 # Date 2021-05-13 21:47:08 # Node ID c7ebad7e5264e04aeb6c85a005d8a3b9508b3b4c # Parent 5b71672f98f6e7620fd8f024241008bdfe0bfdef Fix: [MinGW32] Can't convert lambda to stdcall diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -914,24 +914,27 @@ void VideoDriver_Win32Base::EditBoxLostF SetCandidatePos(this->main_wnd); } +static BOOL CALLBACK MonitorEnumProc(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, reinterpret_cast(&rates)); return rates; }