#define G_LOG_DOMAIN "freeglut-init"
#include "../include/GL/freeglut.h"
-#include "../include/GL/freeglut_internal.h"
+#include "freeglut_internal.h"
/*
* TODO BEFORE THE STABLE RELEASE:
/*
* The settings for the current freeglut session
*/
-SFG_State fgState = { { -1, -1, FALSE }, { 300, 300, TRUE }, GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH,
- FALSE, TRUE, FALSE, FALSE, FALSE, TRUE,
+SFG_State fgState = { { -1, -1, FALSE }, /* Position */
+ { 300, 300, TRUE }, /* Size */
+ GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH, /* DisplayMode */
+ FALSE, /* ForceDirectContext */
+ TRUE, /* TryDirectContext */
+ FALSE, /* ForceIconic */
+ FALSE, /* GLDebugSwitch */
+ FALSE, /* XSyncSwitch */
+ TRUE, /* IgnoreKeyRepeat */
+ 0, /* FPSInterval */
+ 0, /* SwapCount */
+ 0, /* SwapTime */
#ifdef TARGET_HOST_WIN32
- { 0, FALSE },
+ { 0, FALSE }, /* Time */
#else
{ { 0, 0 }, FALSE },
#endif
- { NULL, NULL }, NULL, NULL, NULL, { 640, 480, TRUE }, 16, 72, GLUT_ACTION_EXIT, GLUT_EXEC_STATE_INIT } ;
+ { NULL, NULL }, /* Timers */
+ NULL, /* IdleCallback */
+ NULL, /* MenuStateCallback */
+ NULL, /* MenuStatusCallback */
+ { 640, 480, TRUE }, /* GameModeSize */
+ 16, /* GameModeDepth */
+ 72, /* GameModeRefresh */
+ GLUT_ACTION_EXIT, /* ActionOnWindowClose */
+ GLUT_EXEC_STATE_INIT /* ExecState */
+};
/* -- PRIVATE FUNCTIONS ---------------------------------------------------- */
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = fgDisplay.Instance;
- wc.hIcon = LoadIcon( NULL, IDI_WINLOGO );
+ wc.hIcon = LoadIcon( fgDisplay.Instance, "GLUT_ICON" );
+ if (!wc.hIcon)
+ wc.hIcon = LoadIcon( NULL, IDI_WINLOGO );
+
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
fgState.MenuStateCallback = (FGCBmenuState)NULL ;
fgState.MenuStatusCallback = (FGCBmenuStatus)NULL ;
+ /*
+ * FPS display
+ */
+ fgState.SwapCount = 0;
+ fgState.SwapTime = 0;
+ fgState.FPSInterval = 0;
+
+
#if TARGET_HOST_UNIX_X11
/*
#endif
fgState.Time.Set = TRUE;
+ /* check if GLUT_FPS env var is set */
+ {
+ const char *fps = getenv("GLUT_FPS");
+ if (fps) {
+ sscanf(fps, "%d", &fgState.FPSInterval);
+ if (fgState.FPSInterval <= 0)
+ fgState.FPSInterval = 5000; /* 5000 milliseconds */
+ }
+ }
+
/*
* Grab the environment variable indicating the X display to use.
* This is harmless under Win32, so let's let it stay here...
*/
#if TARGET_HOST_WIN32
- if ( !getenv( "DISPLAY" ) )
- displayName = strdup( "" );
+ if ( !getenv ( "DISPLAY" ) )
+ displayName = strdup ( "" ) ;
else
#endif
displayName = strdup( getenv( "DISPLAY" ) );
/*
* Sets the default display mode for all new windows
*/
-void FGAPIENTRY glutInitDisplayMode( int displayMode )
+void FGAPIENTRY glutInitDisplayMode( unsigned int displayMode )
{
/*
* We will make use of this value when creating a new OpenGL context...
* Grab the value string that must follow the comparison operator...
*/
if( comparison != FG_NONE && i < (gint) strlen( scanner->value.v_identifier ) )
- valueString = g_strdup( scanner->value.v_identifier + i );
+ valueString = strdup( scanner->value.v_identifier + i );
/*
* If there was a value string, convert it to integer...
10, 12
};
-void FGAPIENTRY glutInitDisplayString( char* displayMode )
+void FGAPIENTRY glutInitDisplayString( const char* displayMode )
{
int glut_state_flag = 0 ;
/*