1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

Add support for real fullscreen in OpenGL renderer

This commit is contained in:
Toni Spets 2010-11-08 21:42:47 +02:00
parent 17968c433c
commit ac1d35c6dd

View File

@ -36,6 +36,8 @@ struct render_opengl_impl
HANDLE thread; HANDLE thread;
BOOL run; BOOL run;
HANDLE ev; HANDLE ev;
DEVMODE restore;
}; };
DWORD WINAPI render_opengl_main(IDirectDrawSurfaceImpl *surface); DWORD WINAPI render_opengl_main(IDirectDrawSurfaceImpl *surface);
@ -68,11 +70,24 @@ HRESULT WINAPI render_opengl_Initialize()
HRESULT WINAPI render_opengl_SetDisplayMode(DWORD width, DWORD height) HRESULT WINAPI render_opengl_SetDisplayMode(DWORD width, DWORD height)
{ {
return DD_OK; DEVMODE mode;
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &render_opengl.restore);
memset(&mode, 0, sizeof(DEVMODE));
mode.dmSize = sizeof(DEVMODE);
mode.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
mode.dmPelsWidth = render_opengl.width;
mode.dmPelsHeight = render_opengl.height;
mode.dmBitsPerPel = render_opengl.bpp;
return ChangeDisplaySettings(&mode, CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL ? DD_OK : DDERR_INVALIDMODE;
} }
HRESULT WINAPI render_opengl_RestoreDisplayMode(void) HRESULT WINAPI render_opengl_RestoreDisplayMode(void)
{ {
render_opengl.restore.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT|DM_DISPLAYFLAGS|DM_DISPLAYFREQUENCY|DM_POSITION;
ChangeDisplaySettings(&render_opengl.restore, 0);
return DD_OK; return DD_OK;
} }