Browse Source

fix fullscreen restore from minimized

David Rose 15 years ago
parent
commit
226c5de6ba
1 changed files with 22 additions and 7 deletions
  1. 22 7
      panda/src/windisplay/winGraphicsWindow.cxx

+ 22 - 7
panda/src/windisplay/winGraphicsWindow.cxx

@@ -723,9 +723,10 @@ do_fullscreen_resize(int x_size, int y_size) {
   if (chg_result != DISP_CHANGE_SUCCESSFUL) {
   if (chg_result != DISP_CHANGE_SUCCESSFUL) {
     windisplay_cat.error()
     windisplay_cat.error()
       << "resize ChangeDisplaySettings failed (error code: " 
       << "resize ChangeDisplaySettings failed (error code: " 
-      << chg_result << ") for specified res (" << x_size << " x "
-      << y_size << " x " << dwFullScreenBitDepth << "), " 
-      << dm.dmDisplayFrequency << "Hz\n";
+      << chg_result << ") for specified res: "
+      << dm.dmPelsWidth << " x " << dm.dmPelsHeight
+      << " x " << dm.dmBitsPerPel << ", " 
+      << dm.dmDisplayFrequency << " Hz\n";
     return false;
     return false;
   }
   }
 
 
@@ -1065,12 +1066,15 @@ do_fullscreen_enable() {
   if (chg_result != DISP_CHANGE_SUCCESSFUL) {
   if (chg_result != DISP_CHANGE_SUCCESSFUL) {
     windisplay_cat.error()
     windisplay_cat.error()
       << "ChangeDisplaySettings failed (error code: "
       << "ChangeDisplaySettings failed (error code: "
-      << chg_result << ") for specified res (" << dwWidth
-      << " x " << dwHeight << " x " << dwFullScreenBitDepth
-      << "), " << _fullscreen_display_mode.dmDisplayFrequency  << "Hz\n";
+      << chg_result << ") for specified res: "
+      << dm.dmPelsWidth << " x " << dm.dmPelsHeight
+      << " x " << dm.dmBitsPerPel << ", " 
+      << dm.dmDisplayFrequency << " Hz\n";
     return false;
     return false;
   }
   }
 
 
+  _fullscreen_display_mode = dm;
+
   _properties.set_origin(0, 0);
   _properties.set_origin(0, 0);
   _properties.set_size(dwWidth, dwHeight);
   _properties.set_size(dwWidth, dwHeight);
 
 
@@ -1360,7 +1364,18 @@ window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
           {
           {
             // When a fullscreen window goes active, it automatically gets
             // When a fullscreen window goes active, it automatically gets
             // un-minimized.
             // un-minimized.
-            ChangeDisplaySettings(&_fullscreen_display_mode, CDS_FULLSCREEN);
+            int chg_result =
+              ChangeDisplaySettings(&_fullscreen_display_mode, CDS_FULLSCREEN);
+            if (chg_result != DISP_CHANGE_SUCCESSFUL) {
+              const DEVMODE &dm = _fullscreen_display_mode;
+              windisplay_cat.error()
+                << "restore ChangeDisplaySettings failed (error code: " 
+                << chg_result << ") for specified res: "
+                << dm.dmPelsWidth << " x " << dm.dmPelsHeight
+                << " x " << dm.dmBitsPerPel << ", " 
+                << dm.dmDisplayFrequency << " Hz\n";
+            }
+
             GdiFlush();
             GdiFlush();
             SetWindowPos(_hWnd, HWND_TOP, 0,0,0,0, SWP_NOMOVE | SWP_NOSENDCHANGING | SWP_NOSIZE | SWP_NOOWNERZORDER);
             SetWindowPos(_hWnd, HWND_TOP, 0,0,0,0, SWP_NOMOVE | SWP_NOSENDCHANGING | SWP_NOSIZE | SWP_NOOWNERZORDER);
             fullscreen_restored(properties);
             fullscreen_restored(properties);