X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_input_devices.c;h=0e202fa65f009e07439fe0cee2a864c7baca3f10;hb=bb97ecab3add22cf774d3bb8bdb9d1be537cc524;hp=493bcd8b2c368cc93c61b8274fd2df40647312fe;hpb=063dc3ff4fdf54f8e673eb552a6e2d56b081b5d7;p=freeglut diff --git a/src/freeglut_input_devices.c b/src/freeglut_input_devices.c index 493bcd8..0e202fa 100755 --- a/src/freeglut_input_devices.c +++ b/src/freeglut_input_devices.c @@ -35,8 +35,10 @@ #include #include "freeglut_internal.h" -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 +#if HAVE_ERRNO #include +#endif #include #include #include @@ -53,7 +55,7 @@ typedef struct { struct termios termio, termio_save; } SERIALPORT; -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_MS_WINDOWS #include #include typedef struct { @@ -136,11 +138,20 @@ int fgInputDeviceDetect( void ) */ void fgInitialiseInputDevices ( void ) { - const char *dial_device=NULL; if( !fgState.InputDevsInitialised ) { + /* will return true for VC8 (VC2005) and higher */ +#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO + char *dial_device=NULL; + size_t sLen; + errno_t err = _dupenv_s( &dial_device, &sLen, "GLUT_DIALS_SERIAL" ); + if (err) + fgError("Error getting GLUT_DIALS_SERIAL environment variable"); +#else + const char *dial_device=NULL; dial_device = getenv ( "GLUT_DIALS_SERIAL" ); -#if TARGET_HOST_WIN32 +#endif +#if TARGET_HOST_MS_WINDOWS if (!dial_device){ static char devname[256]; DWORD size=sizeof(devname); @@ -156,6 +167,10 @@ void fgInitialiseInputDevices ( void ) #endif if ( !dial_device ) return; if ( !( dialbox_port = serial_open ( dial_device ) ) ) return; + /* will return true for VC8 (VC2005) and higher */ +#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO + free ( dial_device ); dial_device = NULL; /* dupenv_s allocates a string that we must free */ +#endif serial_putchar(dialbox_port,DIAL_INITIALIZE); glutTimerFunc ( 10, poll_dials, 0 ); fgState.InputDevsInitialised = GL_TRUE; @@ -250,7 +265,7 @@ static void poll_dials ( int id ) /******** OS Specific Serial I/O routines *******/ -#if TARGET_HOST_UNIX_X11 /* ==> Linux/BSD/UNIX POSIX serial I/O */ +#if TARGET_HOST_POSIX_X11 /* ==> Linux/BSD/UNIX POSIX serial I/O */ static SERIALPORT *serial_open ( const char *device ) { int fd; @@ -313,7 +328,7 @@ static void serial_flush ( SERIALPORT *port ) tcflush ( port->fd, TCIOFLUSH ); } -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_MS_WINDOWS static SERIALPORT *serial_open(const char *device){ HANDLE fh;