projects
/
freeglut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added the ugly ATEXIT_HACK from GLUT 3.7, making freeglut binary compatible with...
[freeglut]
/
src
/
freeglut_joystick.c
diff --git
a/src/freeglut_joystick.c
b/src/freeglut_joystick.c
index
7548a88
..
8260340
100644
(file)
--- a/
src/freeglut_joystick.c
+++ b/
src/freeglut_joystick.c
@@
-59,7
+59,7
@@
# include <IOKit/hid/IOHIDLib.h>
#endif
# include <IOKit/hid/IOHIDLib.h>
#endif
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
# define _JS_MAX_AXES 8
# include <windows.h>
# include <mmsystem.h>
# define _JS_MAX_AXES 8
# include <windows.h>
# include <mmsystem.h>
@@
-67,7
+67,7
@@
#endif
#endif
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
# define _JS_MAX_AXES 16
# if HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
# define _JS_MAX_AXES 16
# if HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
@@
-80,7
+80,7
@@
/* XXX The below hack is done until freeglut's autoconf is updated. */
# define HAVE_USB_JS 1
/* XXX The below hack is done until freeglut's autoconf is updated. */
# define HAVE_USB_JS 1
-# if defined(__FreeBSD__) && __FreeBSD_version >= 500000
+# if defined(__FreeBSD__)
# include <sys/joystick.h>
# else
/*
# include <sys/joystick.h>
# else
/*
@@
-230,7
+230,7
@@
static int fghJoystickFindUSBdev(char *name, char *out, int outlen)
static int protection_warned = 0;
for (i = 0; i < 16; i++) {
static int protection_warned = 0;
for (i = 0; i < 16; i++) {
- sprintf(buf, "%s%d", USBDEV, i);
+ snprintf(buf, sizeof(buf), "%s%d", USBDEV, i);
f = open(buf, O_RDONLY);
if (f >= 0) {
cp = fghJoystickWalkUSBdev(f, name, out, outlen);
f = open(buf, O_RDONLY);
if (f >= 0) {
cp = fghJoystickWalkUSBdev(f, name, out, outlen);
@@
-385,14
+385,14
@@
struct tagSFG_Joystick
maxReport[_JS_MAX_AXES];
#endif
maxReport[_JS_MAX_AXES];
#endif
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
JOYCAPS jsCaps;
JOYINFOEX js;
UINT js_id;
#endif
JOYCAPS jsCaps;
JOYINFOEX js;
UINT js_id;
#endif
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
# if defined(__FreeBSD__) || defined(__NetBSD__)
struct os_specific_s *os;
# endif
# if defined(__FreeBSD__) || defined(__NetBSD__)
struct os_specific_s *os;
# endif
@@
-455,7
+455,7
@@
static SFG_Joystick *fgJoystick [ MAX_NUM_JOYSTICKS ];
*/
static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
{
*/
static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
{
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
MMRESULT status;
#else
int status;
MMRESULT status;
#else
int status;
@@
-531,7
+531,7
@@
static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
}
#endif
}
#endif
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
status = joyGetPosEx( joy->js_id, &joy->js );
if ( status != JOYERR_NOERROR )
status = joyGetPosEx( joy->js_id, &joy->js );
if ( status != JOYERR_NOERROR )
@@
-597,7
+597,7
@@
static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
}
#endif
}
#endif
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
# if defined(__FreeBSD__) || defined(__NetBSD__)
if ( joy->os->is_analog )
{
# if defined(__FreeBSD__) || defined(__NetBSD__)
if ( joy->os->is_analog )
{
@@
-656,9
+656,9
@@
static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
if (usage > 0 && usage < _JS_MAX_BUTTONS + 1)
{
if (d)
if (usage > 0 && usage < _JS_MAX_BUTTONS + 1)
{
if (d)
- joy->os->cache_buttons |= (1 << usage - 1);
+ joy->os->cache_buttons |= (1 << ( usage - 1 ));
else
else
- joy->os->cache_buttons &= ~(1 << usage - 1);
+ joy->os->cache_buttons &= ~(1 << ( usage - 1 ));
}
}
}
}
}
}
@@
-975,11
+975,11
@@
static void fghJoystickAddHatElement ( SFG_Joystick *joy, CFDictionaryRef button
}
#endif
}
#endif
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
/* Inspired by
http://msdn.microsoft.com/archive/en-us/dnargame/html/msdn_sidewind3d.asp
*/
/* Inspired by
http://msdn.microsoft.com/archive/en-us/dnargame/html/msdn_sidewind3d.asp
*/
-# if defined(_MSC_VER)
+# if FREEGLUT_LIB_PRAGMAS
# pragma comment (lib, "advapi32.lib")
# endif
# pragma comment (lib, "advapi32.lib")
# endif
@@
-997,9
+997,9
@@
static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
return 0;
/* Open .. MediaResources\CurrentJoystickSettings */
return 0;
/* Open .. MediaResources\CurrentJoystickSettings */
- sprintf ( buffer, "%s\\%s\\%s",
- REGSTR_PATH_JOYCONFIG, joy->jsCaps.szRegKey,
- REGSTR_KEY_JOYCURR );
+ _snprintf ( buffer, sizeof(buffer), "%s\\%s\\%s",
+ REGSTR_PATH_JOYCONFIG, joy->jsCaps.szRegKey,
+ REGSTR_KEY_JOYCURR );
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey);
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey);
@@
-1009,7
+1009,7
@@
static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
dwcb = sizeof(OEMKey);
/* JOYSTICKID1-16 is zero-based; registry entries for VJOYD are 1-based. */
dwcb = sizeof(OEMKey);
/* JOYSTICKID1-16 is zero-based; registry entries for VJOYD are 1-based. */
- sprintf ( buffer, "Joystick%d%s", joy->js_id + 1, REGSTR_VAL_JOYOEMNAME );
+ _snprintf ( buffer, sizeof(buffer), "Joystick%d%s", joy->js_id + 1, REGSTR_VAL_JOYOEMNAME );
lr = RegQueryValueEx ( hKey, buffer, 0, 0, (LPBYTE) OEMKey, &dwcb);
RegCloseKey ( hKey );
lr = RegQueryValueEx ( hKey, buffer, 0, 0, (LPBYTE) OEMKey, &dwcb);
RegCloseKey ( hKey );
@@
-1017,7
+1017,7
@@
static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
if ( lr != ERROR_SUCCESS ) return 0;
/* Open OEM Key from ...MediaProperties */
if ( lr != ERROR_SUCCESS ) return 0;
/* Open OEM Key from ...MediaProperties */
- sprintf ( buffer, "%s\\%s", REGSTR_PATH_JOYOEM, OEMKey );
+ _snprintf ( buffer, sizeof(buffer), "%s\\%s", REGSTR_PATH_JOYOEM, OEMKey );
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey );
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey );
@@
-1039,7
+1039,7
@@
static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
static void fghJoystickOpen( SFG_Joystick* joy )
{
static void fghJoystickOpen( SFG_Joystick* joy )
{
- int i;
+ int i = 0;
#if TARGET_HOST_MACINTOSH
OSStatus err;
#endif
#if TARGET_HOST_MACINTOSH
OSStatus err;
#endif
@@
-1053,17
+1053,22
@@
static void fghJoystickOpen( SFG_Joystick* joy )
CFDictionaryRef props;
CFTypeRef topLevelElement;
#endif
CFDictionaryRef props;
CFTypeRef topLevelElement;
#endif
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
# if defined( __FreeBSD__ ) || defined( __NetBSD__ )
char *cp;
# endif
# ifdef JS_NEW
unsigned char u;
# else
# if defined( __FreeBSD__ ) || defined( __NetBSD__ )
char *cp;
# endif
# ifdef JS_NEW
unsigned char u;
# else
- int counter;
+# if defined( __linux__ ) || TARGET_HOST_SOLARIS
+ int counter = 0;
+# endif
# endif
#endif
# endif
#endif
+ /* Silence gcc, the correct #ifdefs would be too fragile... */
+ (void)i;
+
/*
* Default values (for no joystick -- each conditional will reset the
* error flag)
/*
* Default values (for no joystick -- each conditional will reset the
* error flag)
@@
-1222,7
+1227,7
@@
static void fghJoystickOpen( SFG_Joystick* joy )
CFRelease( props );
#endif
CFRelease( props );
#endif
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
joy->js.dwFlags = JOY_RETURNALL;
joy->js.dwSize = sizeof( joy->js );
joy->js.dwFlags = JOY_RETURNALL;
joy->js.dwSize = sizeof( joy->js );
@@
-1284,7
+1289,7
@@
static void fghJoystickOpen( SFG_Joystick* joy )
}
#endif
}
#endif
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#if defined( __FreeBSD__ ) || defined( __NetBSD__ )
for( i = 0; i < _JS_MAX_AXES; i++ )
joy->os->cache_axes[ i ] = 0.0f;
#if defined( __FreeBSD__ ) || defined( __NetBSD__ )
for( i = 0; i < _JS_MAX_AXES; i++ )
joy->os->cache_axes[ i ] = 0.0f;
@@
-1320,7
+1325,7
@@
static void fghJoystickOpen( SFG_Joystick* joy )
if( joy->error )
return;
if( joy->error )
return;
- sprintf( joyfname, "%s/.joy%drc", getenv( "HOME" ), joy->id );
+ snprintf( joyfname, sizeof(buffer), "%s/.joy%drc", getenv( "HOME" ), joy->id );
joyfile = fopen( joyfname, "r" );
joy->error =( joyfile == NULL );
joyfile = fopen( joyfname, "r" );
joy->error =( joyfile == NULL );
@@
-1389,7
+1394,7
@@
static void fghJoystickOpen( SFG_Joystick* joy )
# endif
#endif
# endif
#endif
-#if defined( __linux__ )
+#if defined( __linux__ ) || TARGET_HOST_SOLARIS
/* Default for older Linux systems. */
joy->num_axes = 2;
joy->num_buttons = 32;
/* Default for older Linux systems. */
joy->num_axes = 2;
joy->num_buttons = 32;
@@
-1483,7
+1488,7
@@
static void fghJoystickInit( int ident )
#if TARGET_HOST_MACINTOSH
fgJoystick[ ident ]->id = ident;
#if TARGET_HOST_MACINTOSH
fgJoystick[ ident ]->id = ident;
- sprintf( fgJoystick[ ident ]->fname, "/dev/js%d", ident ); /* FIXME */
+ snprintf( fgJoystick[ ident ]->fname, sizeof(fgJoystick[ ident ]->fname), "/dev/js%d", ident ); /* FIXME */
fgJoystick[ ident ]->error = GL_FALSE;
#endif
fgJoystick[ ident ]->error = GL_FALSE;
#endif
@@
-1530,7
+1535,7
@@
static void fghJoystickInit( int ident )
}
#endif
}
#endif
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
switch( ident )
{
case 0:
switch( ident )
{
case 0:
@@
-1548,7
+1553,7
@@
static void fghJoystickInit( int ident )
}
#endif
}
#endif
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
# if defined( __FreeBSD__ ) || defined( __NetBSD__ )
fgJoystick[ ident ]->id = ident;
fgJoystick[ ident ]->error = GL_FALSE;
# if defined( __FreeBSD__ ) || defined( __NetBSD__ )
fgJoystick[ ident ]->id = ident;
fgJoystick[ ident ]->error = GL_FALSE;
@@
-1558,18
+1563,18
@@
static void fghJoystickInit( int ident )
if( ident < USB_IDENT_OFFSET )
fgJoystick[ ident ]->os->is_analog = 1;
if( fgJoystick[ ident ]->os->is_analog )
if( ident < USB_IDENT_OFFSET )
fgJoystick[ ident ]->os->is_analog = 1;
if( fgJoystick[ ident ]->os->is_analog )
- sprintf( fgJoystick[ ident ]->os->fname, "%s%d", AJSDEV, ident );
+ snprintf( fgJoystick[ ident ]->os->fname, sizeof(fgJoystick[ ident ]->os->fname), "%s%d", AJSDEV, ident );
else
else
- sprintf( fgJoystick[ ident ]->os->fname, "%s%d", UHIDDEV,
+ snprintf( fgJoystick[ ident ]->os->fname, sizeof(fgJoystick[ ident ]->os->fname), "%s%d", UHIDDEV,
ident - USB_IDENT_OFFSET );
# elif defined( __linux__ )
fgJoystick[ ident ]->id = ident;
fgJoystick[ ident ]->error = GL_FALSE;
ident - USB_IDENT_OFFSET );
# elif defined( __linux__ )
fgJoystick[ ident ]->id = ident;
fgJoystick[ ident ]->error = GL_FALSE;
- sprintf( fgJoystick[ident]->fname, "/dev/input/js%d", ident );
+ snprintf( fgJoystick[ident]->fname, sizeof(fgJoystick[ident]->fname), "/dev/input/js%d", ident );
if( access( fgJoystick[ ident ]->fname, F_OK ) != 0 )
if( access( fgJoystick[ ident ]->fname, F_OK ) != 0 )
- sprintf( fgJoystick[ ident ]->fname, "/dev/js%d", ident );
+ snprintf( fgJoystick[ ident ]->fname, sizeof(fgJoystick[ ident ]->fname), "/dev/js%d", ident );
# endif
#endif
# endif
#endif
@@
-1581,15
+1586,14
@@
static void fghJoystickInit( int ident )
*/
void fgInitialiseJoysticks ( void )
{
*/
void fgInitialiseJoysticks ( void )
{
- /* Initialization courtesy of OpenGLUT -- do we want it? */
- if( !fgState.JoysticksInitialised )
- {
- int ident ;
- for ( ident = 0; ident < MAX_NUM_JOYSTICKS; ident++ )
- fghJoystickInit( ident );
+ if( !fgState.JoysticksInitialised )
+ {
+ int ident ;
+ for ( ident = 0; ident < MAX_NUM_JOYSTICKS; ident++ )
+ fghJoystickInit( ident );
- fgState.JoysticksInitialised = GL_TRUE;
- }
+ fgState.JoysticksInitialised = GL_TRUE;
+ }
}
/*
}
/*
@@
-1614,11
+1618,11
@@
void fgJoystickClose( void )
close( fgJoystick[ ident ]->hidDev );
#endif
close( fgJoystick[ ident ]->hidDev );
#endif
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE)
/* Do nothing special */
#endif
/* Do nothing special */
#endif
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#if defined( __FreeBSD__ ) || defined( __NetBSD__ )
if( fgJoystick[ident]->os )
{
#if defined( __FreeBSD__ ) || defined( __NetBSD__ )
if( fgJoystick[ident]->os )
{
@@
-1680,21
+1684,18
@@
void fgJoystickPollWindow( SFG_Window* window )
*/
int fgJoystickDetect( void )
{
*/
int fgJoystickDetect( void )
{
- int ident;
-
- fgInitialiseJoysticks ();
+ int ident;
- if ( !fgJoystick )
- return 0;
+ fgInitialiseJoysticks ();
- if ( !fgState.JoysticksInitialised )
- return 0;
+ if ( !fgState.JoysticksInitialised )
+ return 0;
- for( ident=0; ident<MAX_NUM_JOYSTICKS; ident++ )
- if( fgJoystick[ident] && !fgJoystick[ident]->error )
- return 1;
+ for( ident=0; ident<MAX_NUM_JOYSTICKS; ident++ )
+ if( fgJoystick[ident] && !fgJoystick[ident]->error )
+ return 1;
- return 0;
+ return 0;
}
/*
}
/*