diff --git a/Engine/source/windowManager/win32/win32Window.cpp b/Engine/source/windowManager/win32/win32Window.cpp index 9dac998f1..88be80cf1 100644 --- a/Engine/source/windowManager/win32/win32Window.cpp +++ b/Engine/source/windowManager/win32/win32Window.cpp @@ -149,7 +149,6 @@ const GFXVideoMode & Win32Window::getVideoMode() void Win32Window::setVideoMode( const GFXVideoMode &mode ) { bool needCurtain = (mVideoMode.fullScreen != mode.fullScreen); - static bool first_load = true; if(needCurtain) { @@ -219,12 +218,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.