diff --git a/src/dd.c b/src/dd.c index 1666a17..99c9801 100644 --- a/src/dd.c +++ b/src/dd.c @@ -720,6 +720,8 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl if (ChangeDisplaySettings(&g_ddraw->render.mode, CDS_TEST) != DISP_CHANGE_SUCCESSFUL) { /* everything failed, use windowed/borderless mode instead */ + ChangeDisplaySettings(NULL, 0); + g_ddraw->render.width = g_ddraw->width; g_ddraw->render.height = g_ddraw->height; @@ -728,11 +730,22 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl g_ddraw->windowed = TRUE; - if (g_ddraw->render.width <= real_GetSystemMetrics(SM_CXSCREEN) && - g_ddraw->render.height <= real_GetSystemMetrics(SM_CYSCREEN)) + if (g_ddraw->render.width <= g_ddraw->mode.dmPelsWidth && + g_ddraw->render.height <= g_ddraw->mode.dmPelsHeight) { /* Switch to borderless mode if window fits into screen */ g_ddraw->fullscreen = TRUE; + border = FALSE; + + g_ddraw->render.width = g_ddraw->mode.dmPelsWidth; + g_ddraw->render.height = g_ddraw->mode.dmPelsHeight; + + g_ddraw->render.mode.dmPelsWidth = g_ddraw->render.width; + g_ddraw->render.mode.dmPelsHeight = g_ddraw->render.height; + + /* prevent OpenGL from going automatically into fullscreen exclusive mode */ + if (g_ddraw->renderer == ogl_render_main) + nonexclusive = TRUE; } else {