Should be no real changes to the code function.
I missed a few lines that went past 80 columns. (^& Also made formatting more consistant. Added a couple of XXX comments re. FreeBSD vs. general BSD #ifdef's. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@264 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
1b7f3df686
commit
3d344ad2de
@ -118,6 +118,9 @@
|
|||||||
typedef struct tagSFG_Joystick SFG_Joystick;
|
typedef struct tagSFG_Joystick SFG_Joystick;
|
||||||
struct tagSFG_Joystick
|
struct tagSFG_Joystick
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* XXX All BSDs might share this?
|
||||||
|
*/
|
||||||
#ifdef __FreeBSD__
|
#ifdef __FreeBSD__
|
||||||
int id;
|
int id;
|
||||||
#endif
|
#endif
|
||||||
@ -291,15 +294,15 @@ static float fghJoystickFudgeAxis( SFG_Joystick* joy, float value, int axis )
|
|||||||
joy->min[ axis ]);
|
joy->min[ axis ]);
|
||||||
|
|
||||||
if( xx < -joy->saturate[ axis ] )
|
if( xx < -joy->saturate[ axis ] )
|
||||||
return( -1.0f );
|
return -1.0f;
|
||||||
|
|
||||||
if( xx > -joy->dead_band [ axis ] )
|
if( xx > -joy->dead_band [ axis ] )
|
||||||
return( 0.0f );
|
return 0.0f;
|
||||||
|
|
||||||
xx = (xx + joy->dead_band[ axis ]) / (joy->saturate[ axis ] -
|
xx = (xx + joy->dead_band[ axis ]) / (joy->saturate[ axis ] -
|
||||||
joy->dead_band[ axis ]);
|
joy->dead_band[ axis ]);
|
||||||
|
|
||||||
return( ( xx < -1.0f ) ? -1.0f : xx );
|
return ( xx < -1.0f ) ? -1.0f : xx;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -315,7 +318,7 @@ static float fghJoystickFudgeAxis( SFG_Joystick* joy, float value, int axis )
|
|||||||
xx = (xx - joy->dead_band[ axis ]) / (joy->saturate[ axis ] -
|
xx = (xx - joy->dead_band[ axis ]) / (joy->saturate[ axis ] -
|
||||||
joy->dead_band[ axis ]);
|
joy->dead_band[ axis ]);
|
||||||
|
|
||||||
return( ( xx > 1.0f ) ? 1.0f : xx );
|
return ( xx > 1.0f ) ? 1.0f : xx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -440,7 +443,9 @@ static void fghJoystickOpen( SFG_Joystick* joy )
|
|||||||
|
|
||||||
if( joy->error )
|
if( joy->error )
|
||||||
return;
|
return;
|
||||||
|
/*
|
||||||
|
* XXX All BSDs should share this?
|
||||||
|
*/
|
||||||
# ifdef __FreeBSD__
|
# ifdef __FreeBSD__
|
||||||
fghJoystickRawRead(joy, buttons, axes );
|
fghJoystickRawRead(joy, buttons, axes );
|
||||||
joy->error = axes[ 0 ] < -1000000000.0f;
|
joy->error = axes[ 0 ] < -1000000000.0f;
|
||||||
@ -477,6 +482,7 @@ static void fghJoystickOpen( SFG_Joystick* joy )
|
|||||||
* Set the correct number of axes for the linux driver
|
* Set the correct number of axes for the linux driver
|
||||||
*/
|
*/
|
||||||
# ifdef JS_NEW
|
# ifdef JS_NEW
|
||||||
|
|
||||||
ioctl( joy->fd, JSIOCGAXES , &joy->num_axes );
|
ioctl( joy->fd, JSIOCGAXES , &joy->num_axes );
|
||||||
ioctl( joy->fd, JSIOCGBUTTONS, &joy->num_buttons );
|
ioctl( joy->fd, JSIOCGBUTTONS, &joy->num_buttons );
|
||||||
fcntl( joy->fd, F_SETFL, O_NONBLOCK );
|
fcntl( joy->fd, F_SETFL, O_NONBLOCK );
|
||||||
@ -498,7 +504,10 @@ static void fghJoystickOpen( SFG_Joystick* joy )
|
|||||||
{
|
{
|
||||||
fghJoystickRawRead( joy, NULL, joy->center );
|
fghJoystickRawRead( joy, NULL, joy->center );
|
||||||
counter++;
|
counter++;
|
||||||
} while( !joy->error && counter < 100 && joy->center[ 0 ] == 512.0f && joy->center[ 1 ] == 512.0f );
|
} while( !joy->error &&
|
||||||
|
counter < 100 &&
|
||||||
|
joy->center[ 0 ] == 512.0f &&
|
||||||
|
joy->center[ 1 ] == 512.0f );
|
||||||
|
|
||||||
if( counter >= 100 )
|
if( counter >= 100 )
|
||||||
joy->error = TRUE;
|
joy->error = TRUE;
|
||||||
@ -534,12 +543,24 @@ void fgJoystickInit( int ident )
|
|||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
switch( ident )
|
switch( ident )
|
||||||
{
|
{
|
||||||
case 0: fgJoystick->js_id = JOYSTICKID1; fghJoystickOpen( fgJoystick ); break;
|
case 0:
|
||||||
case 1: fgJoystick->js_id = JOYSTICKID2; fghJoystickOpen( fgJoystick ); break;
|
fgJoystick->js_id = JOYSTICKID1;
|
||||||
default: fgJoystick->num_axes = 0; fgJoystick->error = TRUE; break;
|
fghJoystickOpen( fgJoystick );
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
fgJoystick->js_id = JOYSTICKID2;
|
||||||
|
fghJoystickOpen( fgJoystick );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fgJoystick->num_axes = 0;
|
||||||
|
fgJoystick->error = TRUE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XXX All BSDs should share this code?
|
||||||
|
*/
|
||||||
# ifdef __FreeBSD__
|
# ifdef __FreeBSD__
|
||||||
fgJoystick->id = ident;
|
fgJoystick->id = ident;
|
||||||
sprintf( fgJoystick->fname, "/dev/joy%d", ident );
|
sprintf( fgJoystick->fname, "/dev/joy%d", ident );
|
||||||
@ -596,22 +617,34 @@ void fgJoystickPollWindow( SFG_Window* window )
|
|||||||
* We might consider adding such functions to freeglut-2.0.
|
* We might consider adding such functions to freeglut-2.0.
|
||||||
*/
|
*/
|
||||||
#if 0
|
#if 0
|
||||||
int getNumAxes () { return num_axes ; }
|
int getNumAxes ()
|
||||||
int notWorking () { return error ; }
|
{ return num_axes; }
|
||||||
|
int notWorking ()
|
||||||
|
{ return error; }
|
||||||
|
|
||||||
float getDeadBand ( int axis ) { return dead_band [ axis ] ; }
|
float getDeadBand ( int axis )
|
||||||
void setDeadBand ( int axis, float db ) { dead_band [ axis ] = db ; }
|
{ return dead_band [ axis ]; }
|
||||||
|
void setDeadBand ( int axis, float db )
|
||||||
|
{ dead_band [ axis ] = db; }
|
||||||
|
|
||||||
float getSaturation ( int axis ) { return saturate [ axis ] ; }
|
float getSaturation ( int axis )
|
||||||
void setSaturation ( int axis, float st ) { saturate [ axis ] = st ; }
|
{ return saturate [ axis ]; }
|
||||||
|
void setSaturation ( int axis, float st )
|
||||||
|
{ saturate [ axis ] = st; }
|
||||||
|
|
||||||
void setMinRange ( float *axes ) { memcpy ( min , axes, num_axes * sizeof(float) ) ; }
|
void setMinRange ( float *axes )
|
||||||
void setMaxRange ( float *axes ) { memcpy ( max , axes, num_axes * sizeof(float) ) ; }
|
{ memcpy ( min , axes, num_axes * sizeof(float) ); }
|
||||||
void setCenter ( float *axes ) { memcpy ( center, axes, num_axes * sizeof(float) ) ; }
|
void setMaxRange ( float *axes )
|
||||||
|
{ memcpy ( max , axes, num_axes * sizeof(float) ); }
|
||||||
|
void setCenter ( float *axes )
|
||||||
|
{ memcpy ( center, axes, num_axes * sizeof(float) ); }
|
||||||
|
|
||||||
void getMinRange ( float *axes ) { memcpy ( axes, min , num_axes * sizeof(float) ) ; }
|
void getMinRange ( float *axes )
|
||||||
void getMaxRange ( float *axes ) { memcpy ( axes, max , num_axes * sizeof(float) ) ; }
|
{ memcpy ( axes, min , num_axes * sizeof(float) ); }
|
||||||
void getCenter ( float *axes ) { memcpy ( axes, center, num_axes * sizeof(float) ) ; }
|
void getMaxRange ( float *axes )
|
||||||
|
{ memcpy ( axes, max , num_axes * sizeof(float) ); }
|
||||||
|
void getCenter ( float *axes )
|
||||||
|
{ memcpy ( axes, center, num_axes * sizeof(float) ); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*** END OF FILE ***/
|
/*** END OF FILE ***/
|
||||||
|
Reference in New Issue
Block a user