From 2df48a78ccf617da3c1b4304353a59adbe51b431 Mon Sep 17 00:00:00 2001 From: glx22 Date: Thu, 13 May 2021 23:47:08 +0200 Subject: [PATCH] Fix: [MinGW32] Can't convert lambda to stdcall --- 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 7dfc0034a5..9c5714786c 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -914,24 +914,27 @@ void VideoDriver_Win32Base::EditBoxLostFocus() 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; }