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; }