#define G_LOG_DOMAIN "freeglut-gamemode"
#include "../include/GL/freeglut.h"
-#include "../include/GL/freeglut_internal.h"
+#include "freeglut_internal.h"
/*
* TODO BEFORE THE STABLE RELEASE:
/*
* Grab the current desktop settings...
*/
- EnumDisplaySettings( NULL, ENUM_CURRENT_SETTINGS, &fgDisplay.DisplayMode );
+
+/* hack to get around my stupid cross-gcc headers */
+#define FREEGLUT_ENUM_CURRENT_SETTINGS -1
+
+ EnumDisplaySettings( NULL, FREEGLUT_ENUM_CURRENT_SETTINGS, &fgDisplay.DisplayMode );
/*
* Make sure we will be restoring all settings needed
# ifdef X_XF86VidModeGetAllModeLines
XF86VidModeModeInfo** displayModes;
- gint i, displayModesCount;
+ int i, displayModesCount;
/*
* Query for all the display available...
displayModes[ i ]
);
+ /*
+ * In case this will be the last X11 call we do before exit,
+ * we've to flush the X11 output queue to be sure the command
+ * is really brought onto it's way to the X server.
+ * The application should not do this because it
+ * would not be platform independent then.
+ */
+ XFlush(fgDisplay.Display);
+
return;
}
}
/*
* Checks the display mode settings against user's preferences
*/
-gboolean fghCheckDisplayMode( gint width, gint height, gint depth, gint refresh )
+GLboolean fghCheckDisplayMode( int width, int height, int depth, int refresh )
{
/*
* The desired values should be stored in fgState structure...
/*
* Changes the current display mode to match user's settings
*/
-gboolean fghChangeDisplayMode( gboolean haveToTest )
+GLboolean fghChangeDisplayMode( GLboolean haveToTest )
{
#if TARGET_HOST_UNIX_X11
# ifdef X_XF86VidModeGetAllModeLines
XF86VidModeModeInfo** displayModes;
- gint i, displayModesCount;
+ int i, displayModesCount;
/*
* Query for all the display available...
if( fghCheckDisplayMode( displayModes[ i ]->hdisplay, displayModes[ i ]->vdisplay,
fgState.GameModeDepth, fgState.GameModeRefresh ) )
{
+ if( haveToTest )
+ return( TRUE );
/*
* OKi, this is the display mode we have been looking for...
*/
#elif TARGET_HOST_WIN32
- guint displayModes = 0, mode = 0xffffffff;
- gboolean success = FALSE;
+ unsigned int displayModes = 0, mode = 0xffffffff;
+ GLboolean success = FALSE;
HDC desktopDC;
DEVMODE devMode;
devMode.dmBitsPerPel, fgState.GameModeRefresh ) )
{
/*
- * OKi, we've found a matching display mode, remember it's number and break
+ * OKi, we've found a matching display mode, remember its number and break
*/
mode = displayModes;
break;
*/
if( mode != 0xffffffff )
{
- gint retVal = DISP_CHANGE_SUCCESSFUL;
+ int retVal = DISP_CHANGE_SUCCESSFUL;
/*
* Mark the values we want to modify in the display change call
/*
* Sets the game mode display string
*/
-void FGAPIENTRY glutGameModeString( const gchar* string )
+void FGAPIENTRY glutGameModeString( const char* string )
{
- gint width = 640, height = 480, depth = 16, refresh = 72;
+ int width = 640, height = 480, depth = 16, refresh = 72;
/*
* This one seems a bit easier than glutInitDisplayString. The bad thing
if( sscanf( string, ":%i@%i", &depth, &refresh ) != 2 )
if( sscanf( string, ":%i", &depth ) != 1 )
if( sscanf( string, "@%i", &refresh ) != 1 )
- g_warning( "unable to parse game mode string `%s'", string );
+ fgWarning( "unable to parse game mode string `%s'", string );
/*
* Hopefully it worked, and if not, we still have the default values
/*
* ...if so, delete it before proceeding...
*/
- fgDestroyWindow( fgStructure.GameMode, TRUE );
+ fgAddToWindowDestroyList( fgStructure.GameMode, TRUE );
}
else
{
*/
if( fghChangeDisplayMode( FALSE ) == FALSE )
{
- g_warning( "failed to change screen settings" );
+ fgWarning( "failed to change screen settings" );
return( FALSE );
}
freeglut_return_if_fail( fgStructure.GameMode != NULL );
/*
- * First of all, have the game mode window created
+ * First of all, have the game mode window destroyed
*/
- fgDestroyWindow( fgStructure.GameMode, TRUE );
+ fgAddToWindowDestroyList( fgStructure.GameMode, TRUE );
#if TARGET_HOST_UNIX_X11
*/
return( fgStructure.GameMode != NULL );
}
+
+ return( -1 );
}
/*** END OF FILE ***/