Forráskód Böngészése

Merge pull request #1037 from Lopuska/patch-9

Black screen fix
Areloch 10 éve
szülő
commit
6a418d4d7f
1 módosított fájl, 8 hozzáadás és 5 törlés
  1. 8 5
      Engine/source/windowManager/win32/win32Window.cpp

+ 8 - 5
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.