engine: fix building with SDL older than 2.0.4
This commit is contained in:
parent
14008703f6
commit
ca84a1a10e
3 changed files with 29 additions and 11 deletions
|
@ -90,6 +90,21 @@ GNU General Public License for more details.
|
||||||
#define SDL_GetScancodeName( x ) "unknown"
|
#define SDL_GetScancodeName( x ) "unknown"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static qboolean SDLash_IsInstanceIDAGameController( SDL_JoystickID joyId )
|
||||||
|
{
|
||||||
|
#if !SDL_VERSION_ATLEAST( 2, 0, 4 )
|
||||||
|
// HACKHACK: if we're not initialized g_joy, then we're probably using gamecontroller api
|
||||||
|
// so return true
|
||||||
|
if( !g_joy )
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if( SDL_GameControllerFromInstanceID( joyId ) )
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
=============
|
=============
|
||||||
SDLash_KeyEvent
|
SDLash_KeyEvent
|
||||||
|
@ -432,23 +447,23 @@ static void SDLash_EventFilter( SDL_Event *event )
|
||||||
|
|
||||||
/* Joystick events */
|
/* Joystick events */
|
||||||
case SDL_JOYAXISMOTION:
|
case SDL_JOYAXISMOTION:
|
||||||
if ( SDL_GameControllerFromInstanceID( event->jaxis.which ) == NULL )
|
if ( !SDLash_IsInstanceIDAGameController( event->jaxis.which ))
|
||||||
Joy_AxisMotionEvent( event->jaxis.axis, event->jaxis.value );
|
Joy_AxisMotionEvent( event->jaxis.axis, event->jaxis.value );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_JOYBALLMOTION:
|
case SDL_JOYBALLMOTION:
|
||||||
if ( SDL_GameControllerFromInstanceID( event->jball.which ) == NULL )
|
if ( !SDLash_IsInstanceIDAGameController( event->jball.which ))
|
||||||
Joy_BallMotionEvent( event->jball.ball, event->jball.xrel, event->jball.yrel );
|
Joy_BallMotionEvent( event->jball.ball, event->jball.xrel, event->jball.yrel );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_JOYHATMOTION:
|
case SDL_JOYHATMOTION:
|
||||||
if ( SDL_GameControllerFromInstanceID( event->jhat.which ) == NULL )
|
if ( !SDLash_IsInstanceIDAGameController( event->jhat.which ))
|
||||||
Joy_HatMotionEvent( event->jhat.hat, event->jhat.value );
|
Joy_HatMotionEvent( event->jhat.hat, event->jhat.value );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_JOYBUTTONDOWN:
|
case SDL_JOYBUTTONDOWN:
|
||||||
case SDL_JOYBUTTONUP:
|
case SDL_JOYBUTTONUP:
|
||||||
if ( SDL_GameControllerFromInstanceID( event->jbutton.which ) == NULL )
|
if ( !SDLash_IsInstanceIDAGameController( event->jbutton.which ))
|
||||||
Joy_ButtonEvent( event->jbutton.button, event->jbutton.state );
|
Joy_ButtonEvent( event->jbutton.button, event->jbutton.state );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -30,5 +30,8 @@ qboolean GL_UpdateContext( void );
|
||||||
qboolean GL_DeleteContext( void );
|
qboolean GL_DeleteContext( void );
|
||||||
void VID_SaveWindowSize( int width, int height );
|
void VID_SaveWindowSize( int width, int height );
|
||||||
|
|
||||||
|
// joystick events
|
||||||
|
extern SDL_Joystick *g_joy;
|
||||||
|
|
||||||
#endif // XASH_SDL
|
#endif // XASH_SDL
|
||||||
#endif // KEYWRAPPER_H
|
#endif // KEYWRAPPER_H
|
||||||
|
|
|
@ -24,7 +24,7 @@ GNU General Public License for more details.
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "vid_common.h"
|
#include "vid_common.h"
|
||||||
|
|
||||||
static SDL_Joystick *joy;
|
SDL_Joystick *g_joy = NULL;
|
||||||
#if !SDL_VERSION_ATLEAST( 2, 0, 0 )
|
#if !SDL_VERSION_ATLEAST( 2, 0, 0 )
|
||||||
#define SDL_WarpMouseInWindow( win, x, y ) SDL_WarpMouse( ( x ), ( y ) )
|
#define SDL_WarpMouseInWindow( win, x, y ) SDL_WarpMouse( ( x ), ( y ) )
|
||||||
#endif
|
#endif
|
||||||
|
@ -143,9 +143,9 @@ static int SDLash_JoyInit_Old( int numjoy )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( joy )
|
if( g_joy )
|
||||||
{
|
{
|
||||||
SDL_JoystickClose( joy );
|
SDL_JoystickClose( g_joy );
|
||||||
}
|
}
|
||||||
|
|
||||||
num = SDL_NumJoysticks();
|
num = SDL_NumJoysticks();
|
||||||
|
@ -165,9 +165,9 @@ static int SDLash_JoyInit_Old( int numjoy )
|
||||||
|
|
||||||
Con_Reportf( "Pass +set joy_index N to command line, where N is number, to select active joystick\n" );
|
Con_Reportf( "Pass +set joy_index N to command line, where N is number, to select active joystick\n" );
|
||||||
|
|
||||||
joy = SDL_JoystickOpen( numjoy );
|
g_joy = SDL_JoystickOpen( numjoy );
|
||||||
|
|
||||||
if( !joy )
|
if( !g_joy )
|
||||||
{
|
{
|
||||||
Con_Reportf( "Failed to select joystick: %s\n", SDL_GetError( ) );
|
Con_Reportf( "Failed to select joystick: %s\n", SDL_GetError( ) );
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -179,8 +179,8 @@ static int SDLash_JoyInit_Old( int numjoy )
|
||||||
"\tHats: %i\n"
|
"\tHats: %i\n"
|
||||||
"\tButtons: %i\n"
|
"\tButtons: %i\n"
|
||||||
"\tBalls: %i\n",
|
"\tBalls: %i\n",
|
||||||
SDL_JoystickName( joy ), SDL_JoystickNumAxes( joy ), SDL_JoystickNumHats( joy ),
|
SDL_JoystickName( g_joy ), SDL_JoystickNumAxes( g_joy ), SDL_JoystickNumHats( g_joy ),
|
||||||
SDL_JoystickNumButtons( joy ), SDL_JoystickNumBalls( joy ) );
|
SDL_JoystickNumButtons( g_joy ), SDL_JoystickNumBalls( g_joy ) );
|
||||||
|
|
||||||
SDL_GameControllerEventState( SDL_DISABLE );
|
SDL_GameControllerEventState( SDL_DISABLE );
|
||||||
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
|
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
|
||||||
|
|
Loading…
Add table
Reference in a new issue