From 1440142d407d973da2d544d352eb0d717865fb7c Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 18 Aug 2023 18:01:53 +0200 Subject: [PATCH] check if chosen refresh rate is supported --- src/dd.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/dd.c b/src/dd.c index 5d67a52..64e4c5d 100644 --- a/src/dd.c +++ b/src/dd.c @@ -631,18 +631,26 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl mouse_unlock(); memset(&g_ddraw->render.mode, 0, sizeof(DEVMODE)); - g_ddraw->render.mode.dmSize = sizeof(DEVMODE); - g_ddraw->render.mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; - g_ddraw->render.mode.dmPelsWidth = g_ddraw->render.width; - g_ddraw->render.mode.dmPelsHeight = g_ddraw->render.height; if (g_ddraw->refresh_rate) { g_ddraw->render.mode.dmFields |= DM_DISPLAYFREQUENCY; g_ddraw->render.mode.dmDisplayFrequency = g_ddraw->refresh_rate; + + if (ChangeDisplaySettings(&g_ddraw->render.mode, CDS_TEST) != DISP_CHANGE_SUCCESSFUL) + { + g_ddraw->refresh_rate = 0; + + g_ddraw->render.mode.dmFields = 0; + g_ddraw->render.mode.dmDisplayFrequency = 0; + } } + g_ddraw->render.mode.dmFields |= DM_PELSWIDTH | DM_PELSHEIGHT; + g_ddraw->render.mode.dmPelsWidth = g_ddraw->render.width; + g_ddraw->render.mode.dmPelsHeight = g_ddraw->render.height; + if (!g_ddraw->windowed) { /* Making sure the chosen resolution is valid */