/*
- * freeglut_init.c
+ * fg_init.c
*
* Various freeglut initialization functions.
*
1, /* AuxiliaryBufferNumber */
4, /* SampleNumber */
GL_FALSE, /* SkipStaleMotion */
+ GL_FALSE, /* StrokeFontDrawJoinDots */
+ GL_FALSE, /* AllowNegativeWindowPosition */
1, /* OpenGL context MajorVersion */
0, /* OpenGL context MinorVersion */
0, /* OpenGL ContextFlags */
int i, j, argc = *pargc;
{
- /* check if GLUT_FPS env var is set */
+ /* check if GLUT_FPS env var is set */
const char *fps = getenv( "GLUT_FPS" );
if( fps )
return;
}
- /* If we're in game mode, we want to leave game mode */
+ /* If we're in game mode, we want to leave game mode */
if( fgStructure.GameModeWindow ) {
glutLeaveGameMode();
}
/* If there was a menu created, destroy the rendering context */
if( fgStructure.MenuContext )
{
- fgPlatformDestroyContext (fgDisplay.pDisplay, fgStructure.MenuContext->MContext );
+ fgPlatformDestroyContext (fgDisplay.pDisplay, fgStructure.MenuContext->MContext );
free( fgStructure.MenuContext );
fgStructure.MenuContext = NULL;
}
free( timer );
}
- fgPlatformDeinitialiseInputDevices ();
+ fgPlatformDeinitialiseInputDevices ();
- fgState.MouseWheelTicks = 0;
+ fgState.MouseWheelTicks = 0;
fgState.MajorVersion = 1;
fgState.MinorVersion = 0;
fgState.ProgramName = NULL;
}
- fgPlatformCloseDisplay ();
+ fgPlatformCloseDisplay ();
fgState.Initialised = GL_FALSE;
}
/* -- INTERFACE FUNCTIONS -------------------------------------------------- */
-#if defined(NEED_XPARSEGEOMETRY_IMPL)
+#if defined(NEED_XPARSEGEOMETRY_IMPL) || defined(TARGET_HOST_MS_WINDOWS)
# include "util/xparsegeometry_repl.h"
#endif
fgCreateStructure( );
- fghParseCommandLineArguments ( pargc, argv, &displayName, &geometry );
+ fghParseCommandLineArguments ( pargc, argv, &displayName, &geometry );
/*
* Have the display created now. If there wasn't a "-display"
* size.
*/
- if (geometry )
+ if ( geometry )
{
unsigned int parsedWidth, parsedHeight;
int mask = XParseGeometry( geometry,
if( (mask & (WidthValue|HeightValue)) == (WidthValue|HeightValue) )
fgState.Size.Use = GL_TRUE;
- if( mask & XNegative )
+ if( ( mask & XNegative ) && !fgState.AllowNegativeWindowPosition )
fgState.Position.X += fgDisplay.ScreenWidth - fgState.Size.X;
- if( mask & YNegative )
+ if( ( mask & YNegative ) && !fgState.AllowNegativeWindowPosition )
fgState.Position.Y += fgDisplay.ScreenHeight - fgState.Size.Y;
if( (mask & (XValue|YValue)) == (XValue|YValue) )
fgState.Position.X = x;
fgState.Position.Y = y;
- if( ( x >= 0 ) && ( y >= 0 ) )
+ if( ( ( x >= 0 ) && ( y >= 0 ) ) || fgState.AllowNegativeWindowPosition )
fgState.Position.Use = GL_TRUE;
else
fgState.Position.Use = GL_FALSE;