* 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
@ -74,14 +74,14 @@ void FGAPIENTRY glutSetCursor( int cursorID )
|
||||
* (e) Out-of-range cursor-types are ignored. Should we abort?
|
||||
* Print a warning message?
|
||||
*/
|
||||
{
|
||||
Cursor cursor;
|
||||
# define MAP_CURSOR(a,b) case a: cursor = XCreateFontCursor( fgDisplay.Display, b ); break;
|
||||
if( GLUT_CURSOR_FULL_CROSSHAIR == cursorID )
|
||||
cursorID = GLUT_CURSOR_CROSSHAIR;
|
||||
|
||||
switch( cursorID )
|
||||
{
|
||||
Cursor cursor;
|
||||
#define MAP_CURSOR(a,b) case a: cursor = XCreateFontCursor( fgDisplay.Display, b ); break;
|
||||
if( GLUT_CURSOR_FULL_CROSSHAIR == cursorID )
|
||||
cursorID = GLUT_CURSOR_CROSSHAIR;
|
||||
|
||||
switch( cursorID )
|
||||
{
|
||||
MAP_CURSOR( GLUT_CURSOR_RIGHT_ARROW, XC_right_ptr);
|
||||
MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, XC_left_ptr);
|
||||
MAP_CURSOR( GLUT_CURSOR_INFO, XC_hand1);
|
||||
@ -103,17 +103,17 @@ void FGAPIENTRY glutSetCursor( int cursorID )
|
||||
MAP_CURSOR( GLUT_CURSOR_BOTTOM_RIGHT_CORNER, XC_bottom_right_corner);
|
||||
MAP_CURSOR( GLUT_CURSOR_BOTTOM_LEFT_CORNER, XC_bottom_left_corner);
|
||||
MAP_CURSOR( GLUT_CURSOR_NONE, XC_bogosity);
|
||||
case GLUT_CURSOR_INHERIT:
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
case GLUT_CURSOR_INHERIT:
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if( GLUT_CURSOR_INHERIT == cursorID )
|
||||
XUndefineCursor( fgDisplay.Display, fgStructure.Window->Window.Handle );
|
||||
else
|
||||
XDefineCursor( fgDisplay.Display, fgStructure.Window->Window.Handle, cursor );
|
||||
}
|
||||
if( GLUT_CURSOR_INHERIT == cursorID )
|
||||
XUndefineCursor( fgDisplay.Display, fgStructure.Window->Window.Handle );
|
||||
else
|
||||
XDefineCursor( fgDisplay.Display, fgStructure.Window->Window.Handle, cursor );
|
||||
}
|
||||
|
||||
#elif TARGET_HOST_WIN32
|
||||
|
||||
@ -131,21 +131,21 @@ void FGAPIENTRY glutSetCursor( int cursorID )
|
||||
|
||||
switch( cursorID )
|
||||
{
|
||||
MAP_CURSOR( GLUT_CURSOR_RIGHT_ARROW, IDC_ARROW );
|
||||
MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, IDC_ARROW );
|
||||
MAP_CURSOR( GLUT_CURSOR_INFO, IDC_HELP );
|
||||
MAP_CURSOR( GLUT_CURSOR_DESTROY, IDC_CROSS );
|
||||
MAP_CURSOR( GLUT_CURSOR_HELP, IDC_HELP );
|
||||
MAP_CURSOR( GLUT_CURSOR_CYCLE, IDC_SIZEALL );
|
||||
MAP_CURSOR( GLUT_CURSOR_SPRAY, IDC_CROSS );
|
||||
MAP_CURSOR( GLUT_CURSOR_WAIT, IDC_WAIT );
|
||||
MAP_CURSOR( GLUT_CURSOR_TEXT, IDC_UPARROW );
|
||||
MAP_CURSOR( GLUT_CURSOR_CROSSHAIR, IDC_CROSS );
|
||||
/* MAP_CURSOR( GLUT_CURSOR_NONE, IDC_NO ); */
|
||||
ZAP_CURSOR( GLUT_CURSOR_NONE, NULL );
|
||||
|
||||
default:
|
||||
MAP_CURSOR( GLUT_CURSOR_UP_DOWN, IDC_ARROW );
|
||||
MAP_CURSOR( GLUT_CURSOR_RIGHT_ARROW, IDC_ARROW );
|
||||
MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, IDC_ARROW );
|
||||
MAP_CURSOR( GLUT_CURSOR_INFO, IDC_HELP );
|
||||
MAP_CURSOR( GLUT_CURSOR_DESTROY, IDC_CROSS );
|
||||
MAP_CURSOR( GLUT_CURSOR_HELP, IDC_HELP );
|
||||
MAP_CURSOR( GLUT_CURSOR_CYCLE, IDC_SIZEALL );
|
||||
MAP_CURSOR( GLUT_CURSOR_SPRAY, IDC_CROSS );
|
||||
MAP_CURSOR( GLUT_CURSOR_WAIT, IDC_WAIT );
|
||||
MAP_CURSOR( GLUT_CURSOR_TEXT, IDC_UPARROW );
|
||||
MAP_CURSOR( GLUT_CURSOR_CROSSHAIR, IDC_CROSS );
|
||||
/* MAP_CURSOR( GLUT_CURSOR_NONE, IDC_NO ); */
|
||||
ZAP_CURSOR( GLUT_CURSOR_NONE, NULL );
|
||||
|
||||
default:
|
||||
MAP_CURSOR( GLUT_CURSOR_UP_DOWN, IDC_ARROW );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -289,7 +289,9 @@ void fgError( const char *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 );
|
||||
fprintf( stderr, "\n" );
|
||||
|
||||
@ -304,7 +306,9 @@ void fgWarning( const char *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 );
|
||||
fprintf( stderr, "\n" );
|
||||
|
||||
|
@ -47,6 +47,8 @@
|
||||
|
||||
/*
|
||||
* 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 )
|
||||
{
|
||||
@ -54,20 +56,13 @@ int FGAPIENTRY glutExtensionSupported( const char* 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_return_val_if_fail( fgStructure.Window != NULL, 0 );
|
||||
|
||||
/*
|
||||
* Check if the extension itself looks valid (contains no spaces)
|
||||
*/
|
||||
if (strchr(extension, ' '))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Note it is safe to query the extensions
|
||||
*/
|
||||
start = extensions = (const char *) glGetString(GL_EXTENSIONS);
|
||||
|
||||
/* 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 )
|
||||
{
|
||||
GLenum error = glGetError();
|
||||
|
||||
/*
|
||||
* Keep reporting errors as long as there are any...
|
||||
*/
|
||||
while( error != GL_NO_ERROR )
|
||||
{
|
||||
/*
|
||||
* Print the current error
|
||||
*/
|
||||
GLenum error;
|
||||
while( ( error = glGetError() ) != GL_NO_ERROR )
|
||||
# undef G_LOG_DOMAIN
|
||||
# define G_LOG_DOMAIN ((gchar *) 0)
|
||||
|
||||
@ -111,27 +98,23 @@ void FGAPIENTRY glutReportErrors( void )
|
||||
|
||||
# undef G_LOG_DOMAIN
|
||||
# define G_LOG_DOMAIN "freeglut_misc.c"
|
||||
|
||||
/*
|
||||
* Grab the next error value
|
||||
*/
|
||||
error = glGetError();
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
/*
|
||||
* 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 )
|
||||
{
|
||||
@ -139,9 +122,6 @@ void FGAPIENTRY glutSetKeyRepeat( int repeatMode )
|
||||
|
||||
freeglut_assert_ready;
|
||||
|
||||
/*
|
||||
* This is really evil, but let's have this done.
|
||||
*/
|
||||
switch( repeatMode )
|
||||
{
|
||||
case GLUT_KEY_REPEAT_OFF: XAutoRepeatOff( fgDisplay.Display ); break;
|
||||
@ -150,14 +130,7 @@ void FGAPIENTRY glutSetKeyRepeat( int repeatMode )
|
||||
{
|
||||
XKeyboardState keyboardState;
|
||||
|
||||
/*
|
||||
* Query the current keyboard state
|
||||
*/
|
||||
XGetKeyboardControl( fgDisplay.Display, &keyboardState );
|
||||
|
||||
/*
|
||||
* Set the auto key repeat basing on the global settings
|
||||
*/
|
||||
glutSetKeyRepeat(
|
||||
keyboardState.global_auto_repeat == AutoRepeatModeOn ?
|
||||
GLUT_KEY_REPEAT_ON : GLUT_KEY_REPEAT_OFF
|
||||
@ -166,9 +139,7 @@ void FGAPIENTRY glutSetKeyRepeat( int repeatMode )
|
||||
break;
|
||||
|
||||
default:
|
||||
/*
|
||||
* Whoops, this was not expected at all
|
||||
*/
|
||||
fgError ("Invalid glutSetKeyRepeat mode: %d", repeatMode);
|
||||
break;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user