From 0a7a552c796f70e9d134fe031412096d4e27e75a Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Mon, 26 Nov 2018 12:11:23 +0100 Subject: [PATCH] forgot to set DEVMODE size d'oh --- ddraw.rc | 2 +- src/main.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ddraw.rc b/ddraw.rc index 48e77f6..6bfe304 100644 --- a/ddraw.rc +++ b/ddraw.rc @@ -3,7 +3,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 3 -#define VERSION_BUILD 1 +#define VERSION_BUILD 2 #define VERSION_REVISION 0 #define VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION diff --git a/src/main.c b/src/main.c index 010e19b..94d079d 100644 --- a/src/main.c +++ b/src/main.c @@ -220,8 +220,10 @@ HRESULT __stdcall ddraw_EnumDisplayModes(IDirectDrawImpl *This, DWORD dwFlags, L DWORD bpp = 0; DWORD flags = 99998; DWORD fixedOutput = 99998; - DEVMODE m; + memset(&m, 0, sizeof(DEVMODE)); + m.dmSize = sizeof(DEVMODE); + while (EnumDisplaySettings(NULL, i, &m)) { if (refreshRate != 60 && m.dmDisplayFrequency >= 50) @@ -236,9 +238,13 @@ HRESULT __stdcall ddraw_EnumDisplayModes(IDirectDrawImpl *This, DWORD dwFlags, L if (fixedOutput != DMDFO_DEFAULT) fixedOutput = m.dmDisplayFixedOutput; + memset(&m, 0, sizeof(DEVMODE)); + m.dmSize = sizeof(DEVMODE); i++; } + memset(&m, 0, sizeof(DEVMODE)); + m.dmSize = sizeof(DEVMODE); i = 0; while (EnumDisplaySettings(NULL, i, &m)) { @@ -276,6 +282,8 @@ HRESULT __stdcall ddraw_EnumDisplayModes(IDirectDrawImpl *This, DWORD dwFlags, L break; } } + memset(&m, 0, sizeof(DEVMODE)); + m.dmSize = sizeof(DEVMODE); i++; } } @@ -456,6 +464,8 @@ BOOL GetLowestResolution(float ratio, SIZE *outRes, DWORD minWidth, DWORD minHei SIZE lowest = { .cx = maxWidth + 1, .cy = maxHeight + 1 }; DWORD i = 0; DEVMODE m; + memset(&m, 0, sizeof(DEVMODE)); + m.dmSize = sizeof(DEVMODE); while (EnumDisplaySettings(NULL, i, &m)) { @@ -475,6 +485,8 @@ BOOL GetLowestResolution(float ratio, SIZE *outRes, DWORD minWidth, DWORD minHei outRes->cy = lowest.cy = m.dmPelsHeight; } } + memset(&m, 0, sizeof(DEVMODE)); + m.dmSize = sizeof(DEVMODE); i++; } @@ -1428,6 +1440,9 @@ ULONG __stdcall ddraw_Release(IDirectDrawImpl *This) { printf(" Released (%p)\n", This); + if (This->bpp) + Settings_Save(&WindowRect, WindowState); + if(This->render.run) { EnterCriticalSection(&This->cs);