From 9565b2b50f326a8351808d83ea3919529200105f Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 30 Aug 2024 11:55:43 +0200 Subject: [PATCH] make sure we return proper resolution list when using windowed hack --- inc/dd.h | 1 + src/dd.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/inc/dd.h b/inc/dd.h index 9ee8049..fe8a902 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -158,6 +158,7 @@ typedef struct CNCDDRAW DWORD minfps_tick_len; DWORD gui_thread_id; BOOL show_driver_warning; + BOOL windowed_hack; struct { diff --git a/src/dd.c b/src/dd.c index 1be2ec9..fb3adf0 100644 --- a/src/dd.c +++ b/src/dd.c @@ -161,7 +161,8 @@ HRESULT dd_EnumDisplayModes( } } - if ((g_ddraw.bpp && g_config.resolutions == RESLIST_NORMAL) || g_config.resolutions == RESLIST_FULL) + if (((g_ddraw.bpp && !g_ddraw.windowed_hack) && g_config.resolutions == RESLIST_NORMAL) || + g_config.resolutions == RESLIST_FULL) { TRACE(" g_ddraw.bpp=%u\n", g_ddraw.bpp); @@ -1498,12 +1499,18 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags) } else if (!g_ddraw.width) { + g_ddraw.windowed_hack = TRUE; + RECT rc = { 0 }; real_GetClientRect(hwnd, &rc); dd_SetDisplayMode(rc.right, rc.bottom, 16, 0); } } + else + { + g_ddraw.windowed_hack = FALSE; + } return DD_OK; }