Module: wine Branch: master Commit: 6a57ed804a37a3697c1ba9af8caccc2f6a212145 URL: https://gitlab.winehq.org/wine/wine/-/commit/6a57ed804a37a3697c1ba9af8caccc2...
Author: Zhiyi Zhang zzhang@codeweavers.com Date: Thu Nov 17 15:46:52 2022 +0800
dwmapi: Fallback to 60Hz if the display frequency is invalid in get_display_frequency().
DwmGetCompositionTimingInfo() may throw a zero division exception if the display reports a 0Hz frequency, which can happen when testing under Xephyr without -fakescreenfps option.
---
dlls/dwmapi/dwmapi_main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/dwmapi/dwmapi_main.c b/dlls/dwmapi/dwmapi_main.c index 1a65410c7eb..56730f79cac 100644 --- a/dlls/dwmapi/dwmapi_main.c +++ b/dlls/dwmapi/dwmapi_main.c @@ -213,12 +213,16 @@ HRESULT WINAPI DwmRegisterThumbnail(HWND dest, HWND src, PHTHUMBNAIL thumbnail_i
static int get_display_frequency(void) { - DEVMODEA mode; + DEVMODEW mode; + BOOL ret;
memset(&mode, 0, sizeof(mode)); mode.dmSize = sizeof(mode); - if (EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &mode)) + ret = EnumDisplaySettingsExW(NULL, ENUM_CURRENT_SETTINGS, &mode, 0); + if (ret && mode.dmFields & DM_DISPLAYFREQUENCY && mode.dmDisplayFrequency) + { return mode.dmDisplayFrequency; + } else { WARN("Failed to query display frequency, returning a fallback value.\n");