* Fixed a bug that I introduced in fgWarning()/fgError(): I thought that
((a) || (b)) was defined to have value as: (a) if (a) != 0 (b) if (a) == 0 ...instead, it has value 0/1. This was causing a bug. It's probably just as well, since what I was trying to do definitely fell into the category of "clever code" rather than "clear code". Sorry. * Made glutSetKeyRepeat() call fgError() if you go out of range. (The old code silently did nothing---not even a warning.) If it is really desirable to keep running, we should probably at least generate an fgWarning(). * Deleted some say-nothing-new comments. * XXX added: Is glutSetKeyRepeat() deprecated? git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@256 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
4672072aa7
commit
9da07cd41f
@ -76,7 +76,7 @@ void FGAPIENTRY glutSetCursor( int cursorID )
|
|||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
Cursor cursor;
|
Cursor cursor;
|
||||||
# define MAP_CURSOR(a,b) case a: cursor = XCreateFontCursor( fgDisplay.Display, b ); break;
|
#define MAP_CURSOR(a,b) case a: cursor = XCreateFontCursor( fgDisplay.Display, b ); break;
|
||||||
if( GLUT_CURSOR_FULL_CROSSHAIR == cursorID )
|
if( GLUT_CURSOR_FULL_CROSSHAIR == cursorID )
|
||||||
cursorID = GLUT_CURSOR_CROSSHAIR;
|
cursorID = GLUT_CURSOR_CROSSHAIR;
|
||||||
|
|
||||||
|
@ -289,7 +289,9 @@ void fgError( const char *fmt, ... )
|
|||||||
|
|
||||||
va_start( ap, fmt );
|
va_start( ap, fmt );
|
||||||
|
|
||||||
fprintf( stderr, "freeglut (%s): ", fgState.ProgramName || "");
|
fprintf( stderr, "freeglut ");
|
||||||
|
if( fgState.ProgramName )
|
||||||
|
fprintf (stderr, "(%s): ", fgState.ProgramName);
|
||||||
vfprintf( stderr, fmt, ap );
|
vfprintf( stderr, fmt, ap );
|
||||||
fprintf( stderr, "\n" );
|
fprintf( stderr, "\n" );
|
||||||
|
|
||||||
@ -304,7 +306,9 @@ void fgWarning( const char *fmt, ... )
|
|||||||
|
|
||||||
va_start( ap, fmt );
|
va_start( ap, fmt );
|
||||||
|
|
||||||
fprintf( stderr, "freeglut (%s): ", fgState.ProgramName || "");
|
fprintf( stderr, "freeglut ");
|
||||||
|
if( fgState.ProgramName )
|
||||||
|
fprintf( stderr, "(%s): ", fgState.ProgramName );
|
||||||
vfprintf( stderr, fmt, ap );
|
vfprintf( stderr, fmt, ap );
|
||||||
fprintf( stderr, "\n" );
|
fprintf( stderr, "\n" );
|
||||||
|
|
||||||
|
@ -47,6 +47,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* This functions checks if an OpenGL extension is supported or not
|
* This functions checks if an OpenGL extension is supported or not
|
||||||
|
*
|
||||||
|
* XXX Wouldn't this be simpler and clearer if we used strtok()?
|
||||||
*/
|
*/
|
||||||
int FGAPIENTRY glutExtensionSupported( const char* extension )
|
int FGAPIENTRY glutExtensionSupported( const char* extension )
|
||||||
{
|
{
|
||||||
@ -54,20 +56,13 @@ int FGAPIENTRY glutExtensionSupported( const char* extension )
|
|||||||
const int len = strlen( extension ) ;
|
const int len = strlen( extension ) ;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure there is a current window, and thus -- a current context available
|
* Make sure there is a current window, and thus a current context available
|
||||||
*/
|
*/
|
||||||
freeglut_assert_ready;
|
freeglut_assert_ready;
|
||||||
freeglut_return_val_if_fail( fgStructure.Window != NULL, 0 );
|
freeglut_return_val_if_fail( fgStructure.Window != NULL, 0 );
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if the extension itself looks valid (contains no spaces)
|
|
||||||
*/
|
|
||||||
if (strchr(extension, ' '))
|
if (strchr(extension, ' '))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
|
||||||
* Note it is safe to query the extensions
|
|
||||||
*/
|
|
||||||
start = extensions = (const char *) glGetString(GL_EXTENSIONS);
|
start = extensions = (const char *) glGetString(GL_EXTENSIONS);
|
||||||
|
|
||||||
/* XXX consider printing a warning to stderr that there's no current
|
/* XXX consider printing a warning to stderr that there's no current
|
||||||
@ -94,16 +89,8 @@ int FGAPIENTRY glutExtensionSupported( const char* extension )
|
|||||||
*/
|
*/
|
||||||
void FGAPIENTRY glutReportErrors( void )
|
void FGAPIENTRY glutReportErrors( void )
|
||||||
{
|
{
|
||||||
GLenum error = glGetError();
|
GLenum error;
|
||||||
|
while( ( error = glGetError() ) != GL_NO_ERROR )
|
||||||
/*
|
|
||||||
* Keep reporting errors as long as there are any...
|
|
||||||
*/
|
|
||||||
while( error != GL_NO_ERROR )
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Print the current error
|
|
||||||
*/
|
|
||||||
# undef G_LOG_DOMAIN
|
# undef G_LOG_DOMAIN
|
||||||
# define G_LOG_DOMAIN ((gchar *) 0)
|
# define G_LOG_DOMAIN ((gchar *) 0)
|
||||||
|
|
||||||
@ -111,27 +98,23 @@ void FGAPIENTRY glutReportErrors( void )
|
|||||||
|
|
||||||
# undef G_LOG_DOMAIN
|
# undef G_LOG_DOMAIN
|
||||||
# define G_LOG_DOMAIN "freeglut_misc.c"
|
# define G_LOG_DOMAIN "freeglut_misc.c"
|
||||||
|
|
||||||
/*
|
|
||||||
* Grab the next error value
|
|
||||||
*/
|
|
||||||
error = glGetError();
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Turns the ignore key auto repeat feature on and off
|
* Turns the ignore key auto repeat feature on and off
|
||||||
|
*
|
||||||
|
* DEPRECATED 11/4/02 - Do not use
|
||||||
*/
|
*/
|
||||||
void FGAPIENTRY glutIgnoreKeyRepeat( int ignore ) /* DEPRECATED 11/4/02 - Do not use */
|
void FGAPIENTRY glutIgnoreKeyRepeat( int ignore )
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* This is simple and not damaging...
|
|
||||||
*/
|
|
||||||
fgState.IgnoreKeyRepeat = ignore ? TRUE : FALSE;
|
fgState.IgnoreKeyRepeat = ignore ? TRUE : FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hints the window system whether to generate key auto repeat, or not. This is evil.
|
* Hints the window system whether to generate key auto repeat, or not.
|
||||||
|
* This is evil.
|
||||||
|
*
|
||||||
|
* XXX Is this also deprecated as of 20021104?
|
||||||
*/
|
*/
|
||||||
void FGAPIENTRY glutSetKeyRepeat( int repeatMode )
|
void FGAPIENTRY glutSetKeyRepeat( int repeatMode )
|
||||||
{
|
{
|
||||||
@ -139,9 +122,6 @@ void FGAPIENTRY glutSetKeyRepeat( int repeatMode )
|
|||||||
|
|
||||||
freeglut_assert_ready;
|
freeglut_assert_ready;
|
||||||
|
|
||||||
/*
|
|
||||||
* This is really evil, but let's have this done.
|
|
||||||
*/
|
|
||||||
switch( repeatMode )
|
switch( repeatMode )
|
||||||
{
|
{
|
||||||
case GLUT_KEY_REPEAT_OFF: XAutoRepeatOff( fgDisplay.Display ); break;
|
case GLUT_KEY_REPEAT_OFF: XAutoRepeatOff( fgDisplay.Display ); break;
|
||||||
@ -150,14 +130,7 @@ void FGAPIENTRY glutSetKeyRepeat( int repeatMode )
|
|||||||
{
|
{
|
||||||
XKeyboardState keyboardState;
|
XKeyboardState keyboardState;
|
||||||
|
|
||||||
/*
|
|
||||||
* Query the current keyboard state
|
|
||||||
*/
|
|
||||||
XGetKeyboardControl( fgDisplay.Display, &keyboardState );
|
XGetKeyboardControl( fgDisplay.Display, &keyboardState );
|
||||||
|
|
||||||
/*
|
|
||||||
* Set the auto key repeat basing on the global settings
|
|
||||||
*/
|
|
||||||
glutSetKeyRepeat(
|
glutSetKeyRepeat(
|
||||||
keyboardState.global_auto_repeat == AutoRepeatModeOn ?
|
keyboardState.global_auto_repeat == AutoRepeatModeOn ?
|
||||||
GLUT_KEY_REPEAT_ON : GLUT_KEY_REPEAT_OFF
|
GLUT_KEY_REPEAT_ON : GLUT_KEY_REPEAT_OFF
|
||||||
@ -166,9 +139,7 @@ void FGAPIENTRY glutSetKeyRepeat( int repeatMode )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/*
|
fgError ("Invalid glutSetKeyRepeat mode: %d", repeatMode);
|
||||||
* Whoops, this was not expected at all
|
|
||||||
*/
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user