From 1131bdd5ab79b0ed5fc6aa9c8c8078de8fe47944 Mon Sep 17 00:00:00 2001 From: Anis Date: Fri, 12 Dec 2014 15:27:49 +0100 Subject: [PATCH] Black screen fix black screen wasn't properly fixed in certain situation. Now it's fixed! --- Engine/source/windowManager/win32/win32Window.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Engine/source/windowManager/win32/win32Window.cpp b/Engine/source/windowManager/win32/win32Window.cpp index 576a0adc7..c1b6aa9db 100644 --- a/Engine/source/windowManager/win32/win32Window.cpp +++ b/Engine/source/windowManager/win32/win32Window.cpp @@ -139,7 +139,6 @@ const GFXVideoMode & Win32Window::getVideoMode() void Win32Window::setVideoMode( const GFXVideoMode &mode ) { bool needCurtain = (mVideoMode.fullScreen != mode.fullScreen); - static bool first_load = true; if(needCurtain) { @@ -209,12 +208,16 @@ void Win32Window::setVideoMode( const GFXVideoMode &mode ) } else { - if (!first_load) - ChangeDisplaySettings(NULL, 0); + DISPLAY_DEVICE dd = GetPrimaryDevice(); + DEVMODE dv; + ZeroMemory(&dv, sizeof(dv)); + dv.dmSize = sizeof(DEVMODE); + EnumDisplaySettings(dd.DeviceName, ENUM_CURRENT_SETTINGS, &dv); - first_load = false; + if ((mode.resolution.x != dv.dmPelsWidth) || (mode.resolution.y != dv.dmPelsHeight)) + ChangeDisplaySettings(NULL, 0); - // Reset device *first*, so that when we call setSize() and let it + // Reset device *first*, so that when we call setSize() and let it // access the monitor settings, it won't end up with our fullscreen // geometry that is just about to change.