Changes to TODO, Windows files - from John Fay
[freeglut] / freeglut-1.3 / freeglut_gamemode.c
index 5b4eff3..d6c6a25 100644 (file)
@@ -75,7 +75,7 @@ void fghRememberState( void )
 
 #elif TARGET_HOST_WIN32
 
-    DEVMODE devMode;
+/*    DEVMODE devMode; */
 
     /*
      * Grab the current desktop settings...
@@ -250,11 +250,12 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
 
     unsigned int    displayModes = 0, mode = 0xffffffff;
     GLboolean success = FALSE;
-    HDC      desktopDC;
+/*    HDC      desktopDC; */
     DEVMODE  devMode;
 
     /*
      * Enumerate the available display modes
+     * Try to get a complete match
      */
     while( EnumDisplaySettings( NULL, displayModes, &devMode ) == TRUE )
     {
@@ -262,7 +263,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
          * Does the enumerated display mode match the user's preferences?
          */
         if( fghCheckDisplayMode( devMode.dmPelsWidth,  devMode.dmPelsHeight,
-                                 devMode.dmBitsPerPel, fgState.GameModeRefresh ) )
+                                 devMode.dmBitsPerPel, devMode.dmDisplayFrequency ) )
         {
             /*
              * OKi, we've found a matching display mode, remember its number and break
@@ -277,6 +278,35 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
         displayModes++;
     }
 
+    if ( mode == 0xffffffff )
+    {
+      /* then try without Display Frequency */
+      displayModes = 0;
+
+      /*
+       * Enumerate the available display modes
+       */
+      while( EnumDisplaySettings( NULL, displayModes, &devMode ) == TRUE )
+      {
+        /* then try without Display Frequency */
+
+        if( fghCheckDisplayMode( devMode.dmPelsWidth,  devMode.dmPelsHeight,
+                                 devMode.dmBitsPerPel, fgState.GameModeRefresh))
+        {
+          /*
+           * OKi, we've found a matching display mode, remember its number and break
+           */
+          mode = displayModes;
+          break;
+        }
+       
+        /*
+         * Switch to the next display mode, if any
+         */
+        displayModes++;
+      }
+    }
+
     /*
      * Did we find a matching display mode?
      */