From 3a1243b05eece82e5b94628001480548cb07e5b1 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 4 Mar 2020 11:41:55 +0100 Subject: [PATCH] [util] Don't set display mode if the desired mode is already set See #1489. Co-authored-by: zvova7890 --- src/util/util_monitor.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/util/util_monitor.cpp b/src/util/util_monitor.cpp index 287677604..1b84714ff 100644 --- a/src/util/util_monitor.cpp +++ b/src/util/util_monitor.cpp @@ -25,6 +25,21 @@ namespace dxvk { pMode->dmPelsWidth, "x", pMode->dmPelsHeight, "@", pMode->dmDisplayFrequency)); + DEVMODEW curMode = { }; + curMode.dmSize = sizeof(curMode); + + if (GetMonitorDisplayMode(hMonitor, ENUM_CURRENT_SETTINGS, &curMode)) { + bool eq = curMode.dmPelsWidth == pMode->dmPelsWidth + && curMode.dmPelsHeight == pMode->dmPelsHeight + && curMode.dmBitsPerPel == pMode->dmBitsPerPel; + + if (pMode->dmFields & DM_DISPLAYFREQUENCY) + eq &= curMode.dmDisplayFrequency == pMode->dmDisplayFrequency; + + if (eq) + return true; + } + LONG status = ::ChangeDisplaySettingsExW(monInfo.szDevice, pMode, nullptr, CDS_FULLSCREEN, nullptr);