OpenGL context is not made current on Win32 until fgSetWindow is called.
[freeglut] / src / freeglut_gamemode.c
index 1d5397e..b909655 100644 (file)
@@ -97,7 +97,7 @@ void fghRememberState( void )
         &fgDisplay.DisplayMode
     );
 
-    if (!fgDisplay.DisplayModeValid)
+    if( !fgDisplay.DisplayModeValid )
             fgWarning( "Runtime use of XF86VidModeGetModeLine failed.\n" );
 
 #   else
@@ -148,7 +148,7 @@ void fghRestoreState( void )
      * not approved as X Consortium standards
      */
 
-    if (fgDisplay.DisplayModeValid)
+    if( fgDisplay.DisplayModeValid )
     {
         XF86VidModeModeInfo** displayModes;
         int i, displayModesCount;
@@ -216,10 +216,10 @@ GLboolean fghCheckDisplayMode( int width, int height, int depth, int refresh )
     /*
      * The desired values should be stored in fgState structure...
      */
-    return( (width == fgState.GameModeSize.X) &&
-            (height == fgState.GameModeSize.Y) &&
-            (depth == fgState.GameModeDepth) &&
-            (refresh == fgState.GameModeRefresh) );
+    return ( width == fgState.GameModeSize.X ) &&
+           ( height == fgState.GameModeSize.Y ) &&
+           ( depth == fgState.GameModeDepth ) &&
+           (refresh == fgState.GameModeRefresh );
 }
 
 /*
@@ -239,7 +239,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
      * This is also used by applcations which check modes by calling
      * glutGameModeGet(GLUT_GAME_MODE_POSSIBLE), so allow the check:
      */
-    if (haveToTest || fgDisplay.DisplayModeValid)
+    if( haveToTest || fgDisplay.DisplayModeValid )
     {
         XF86VidModeModeInfo** displayModes;
         int i, displayModesCount;
@@ -262,7 +262,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
                                      fgState.GameModeRefresh ) )
             {
                 if( haveToTest )
-                    return TRUE;
+                    return GL_TRUE;
                 /*
                  * OKi, this is the display mode we have been looking for...
                  */
@@ -271,7 +271,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
                     fgDisplay.Screen,
                     displayModes[ i ]
                 );
-                return TRUE;
+                return GL_TRUE;
             }
         }
     }
@@ -279,7 +279,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
     /*
      * Something must have went wrong
      */
-    return FALSE;
+    return GL_FALSE;
 
 #   else
 #       warning fghChangeDisplayMode: missing XFree86 video mode extensions, game mode will not change screen resolution when activated
@@ -288,7 +288,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
 #elif TARGET_HOST_WIN32
 
     unsigned int    displayModes = 0, mode = 0xffffffff;
-    GLboolean success = FALSE;
+    GLboolean success = GL_FALSE;
     /* HDC      desktopDC; */
     DEVMODE  devMode;
 
@@ -296,7 +296,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
      * Enumerate the available display modes
      * Try to get a complete match
      */
-    while( EnumDisplaySettings( NULL, displayModes, &devMode ) == TRUE )
+    while( EnumDisplaySettings( NULL, displayModes, &devMode ) )
     {
         /*
          * Does the enumerated display mode match the user's preferences?
@@ -311,7 +311,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
         displayModes++;
     }
 
-    if ( mode == 0xffffffff )
+    if( mode == 0xffffffff )
     {
         /* then try without Display Frequency */
         displayModes = 0;
@@ -319,7 +319,7 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest )
         /*
          * Enumerate the available display modes
          */
-        while( EnumDisplaySettings( NULL, displayModes, &devMode ) == TRUE )
+        while( EnumDisplaySettings( NULL, displayModes, &devMode ) )
         {
             /* then try without Display Frequency */
             if( fghCheckDisplayMode( devMode.dmPelsWidth,
@@ -413,11 +413,11 @@ void FGAPIENTRY glutGameModeString( const char* string )
 int FGAPIENTRY glutEnterGameMode( void )
 {
     if( fgStructure.GameMode )
-        fgAddToWindowDestroyList( fgStructure.GameMode, TRUE );
+        fgAddToWindowDestroyList( fgStructure.GameMode );
     else
         fghRememberState( );
 
-    if( fghChangeDisplayMode( FALSE ) == FALSE )
+    if( ! fghChangeDisplayMode( GL_FALSE ) )
     {
         fgWarning( "failed to change screen settings" );
         return FALSE;
@@ -425,9 +425,11 @@ int FGAPIENTRY glutEnterGameMode( void )
 
     fgStructure.GameMode = fgCreateWindow( 
         NULL, "FREEGLUT", 0, 0,
-        fgState.GameModeSize.X, fgState.GameModeSize.Y, TRUE 
+        fgState.GameModeSize.X, fgState.GameModeSize.Y, GL_TRUE, GL_FALSE
     );
 
+    fgStructure.GameMode->State.IsGameMode = GL_TRUE;
+
 #if TARGET_HOST_UNIX_X11
 
     /* Move the window up to the topleft corner */
@@ -479,7 +481,7 @@ int FGAPIENTRY glutEnterGameMode( void )
 
 #   ifdef X_XF86VidModeSetViewPort
 
-    if (fgDisplay.DisplayModeValid)
+    if( fgDisplay.DisplayModeValid )
     {
         int x, y;
         Window child;
@@ -534,7 +536,9 @@ void FGAPIENTRY glutLeaveGameMode( void )
 {
     freeglut_return_if_fail( fgStructure.GameMode );
 
-    fgAddToWindowDestroyList( fgStructure.GameMode, TRUE );
+    fgStructure.GameMode->State.IsGameMode = GL_FALSE;
+
+    fgAddToWindowDestroyList( fgStructure.GameMode );
 
 #if TARGET_HOST_UNIX_X11
 
@@ -557,7 +561,7 @@ int FGAPIENTRY glutGameModeGet( GLenum eWhat )
         return !!fgStructure.GameMode;
 
     case GLUT_GAME_MODE_POSSIBLE:
-        return fghChangeDisplayMode( TRUE );
+        return fghChangeDisplayMode( GL_TRUE );
 
     case GLUT_GAME_MODE_WIDTH:
         return fgState.GameModeSize.X;