+\r
+void fghParseCommandLineArguments ( int* pargc, char** argv, char **pDisplayName, char **pGeometry )\r
+{\r
+#ifndef _WIN32_WCE\r
+ int i, j, argc = *pargc;\r
+\r
+ {\r
+ /* check if GLUT_FPS env var is set */\r
+ const char *fps = getenv( "GLUT_FPS" );\r
+\r
+ if( fps )\r
+ {\r
+ int interval;\r
+ sscanf( fps, "%d", &interval );\r
+\r
+ if( interval <= 0 )\r
+ fgState.FPSInterval = 5000; /* 5000 millisecond default */\r
+ else\r
+ fgState.FPSInterval = interval;\r
+ }\r
+ }\r
+\r
+ *pDisplayName = getenv( "DISPLAY" );\r
+\r
+ for( i = 1; i < argc; i++ )\r
+ {\r
+ if( strcmp( argv[ i ], "-display" ) == 0 )\r
+ {\r
+ if( ++i >= argc )\r
+ fgError( "-display parameter must be followed by display name" );\r
+\r
+ *pDisplayName = argv[ i ];\r
+\r
+ argv[ i - 1 ] = NULL;\r
+ argv[ i ] = NULL;\r
+ ( *pargc ) -= 2;\r
+ }\r
+ else if( strcmp( argv[ i ], "-geometry" ) == 0 )\r
+ {\r
+ if( ++i >= argc )\r
+ fgError( "-geometry parameter must be followed by window "\r
+ "geometry settings" );\r
+\r
+ *pGeometry = argv[ i ];\r
+\r
+ argv[ i - 1 ] = NULL;\r
+ argv[ i ] = NULL;\r
+ ( *pargc ) -= 2;\r
+ }\r
+ else if( strcmp( argv[ i ], "-direct" ) == 0)\r
+ {\r
+ if( fgState.DirectContext == GLUT_FORCE_INDIRECT_CONTEXT )\r
+ fgError( "parameters ambiguity, -direct and -indirect "\r
+ "cannot be both specified" );\r
+\r
+ fgState.DirectContext = GLUT_FORCE_DIRECT_CONTEXT;\r
+ argv[ i ] = NULL;\r
+ ( *pargc )--;\r
+ }\r
+ else if( strcmp( argv[ i ], "-indirect" ) == 0 )\r
+ {\r
+ if( fgState.DirectContext == GLUT_FORCE_DIRECT_CONTEXT )\r
+ fgError( "parameters ambiguity, -direct and -indirect "\r
+ "cannot be both specified" );\r
+\r
+ fgState.DirectContext = GLUT_FORCE_INDIRECT_CONTEXT;\r
+ argv[ i ] = NULL;\r
+ (*pargc)--;\r
+ }\r
+ else if( strcmp( argv[ i ], "-iconic" ) == 0 )\r
+ {\r
+ fgState.ForceIconic = GL_TRUE;\r
+ argv[ i ] = NULL;\r
+ ( *pargc )--;\r
+ }\r
+ else if( strcmp( argv[ i ], "-gldebug" ) == 0 )\r
+ {\r
+ fgState.GLDebugSwitch = GL_TRUE;\r
+ argv[ i ] = NULL;\r
+ ( *pargc )--;\r
+ }\r
+ else if( strcmp( argv[ i ], "-sync" ) == 0 )\r
+ {\r
+ fgState.XSyncSwitch = GL_TRUE;\r
+ argv[ i ] = NULL;\r
+ ( *pargc )--;\r
+ }\r
+ }\r
+\r
+ /* Compact {argv}. */\r
+ for( i = j = 1; i < *pargc; i++, j++ )\r
+ {\r
+ /* Guaranteed to end because there are "*pargc" arguments left */\r
+ while ( argv[ j ] == NULL )\r
+ j++;\r
+ if ( i != j )\r
+ argv[ i ] = argv[ j ];\r
+ }\r
+\r
+#endif /* _WIN32_WCE */\r
+\r
+}\r
+\r
+\r
+void fghCloseInputDevices ( void )\r