platform: minify changes, use SDL_VERSION_ATLEAST macro(left unfinished)

This commit is contained in:
Alibek Omarov 2019-10-25 17:11:27 +03:00
parent 9e99a2bc37
commit 4d5e7c0557
4 changed files with 127 additions and 61 deletions

View File

@ -27,6 +27,70 @@ GNU General Public License for more details.
static int wheelbutton;
#if ! SDL_VERSION_ATLEAST( 2, 0, 0 )
#define SDL_SCANCODE_A SDLK_a
#define SDL_SCANCODE_Z SDLK_z
#define SDL_SCANCODE_1 SDLK_1
#define SDL_SCANCODE_9 SDLK_9
#define SDL_SCANCODE_F1 SDLK_F1
#define SDL_SCANCODE_F12 SDLK_F12
#define SDL_SCANCODE_GRAVE SDLK_BACKQUOTE
#define SDL_SCANCODE_0 SDLK_0
#define SDL_SCANCODE_BACKSLASH SDLK_BACKSLASH
#define SDL_SCANCODE_LEFTBRACKET SDLK_LEFTBRACKET
#define SDL_SCANCODE_RIGHTBRACKET SDLK_RIGHTBRACKET
#define SDL_SCANCODE_EQUALS: keynum = '='; break;
#define SDL_SCANCODE_MINUS: keynum = '-'; break;
#define SDL_SCANCODE_TAB: keynum = K_TAB; break;
#define SDL_SCANCODE_RETURN: keynum = K_ENTER; break;
#define SDL_SCANCODE_ESCAPE: keynum = K_ESCAPE; break;
#define SDL_SCANCODE_SPACE: keynum = K_SPACE; break;
#define SDL_SCANCODE_BACKSPACE: keynum = K_BACKSPACE; break;
#define SDL_SCANCODE_UP: keynum = K_UPARROW; break;
#define SDL_SCANCODE_LEFT: keynum = K_LEFTARROW; break;
#define SDL_SCANCODE_DOWN: keynum = K_DOWNARROW; break;
#define SDL_SCANCODE_RIGHT: keynum = K_RIGHTARROW; break;
#define SDL_SCANCODE_LALT:
#define SDL_SCANCODE_RALT: keynum = K_ALT; break;
#define SDL_SCANCODE_LCTRL:
#define SDL_SCANCODE_RCTRL: keynum = K_CTRL; break;
#define SDL_SCANCODE_LSHIFT:
#define SDL_SCANCODE_RSHIFT: keynum = K_SHIFT; break;
#define SDL_SCANCODE_LGUI:
#define SDL_SCANCODE_RGUI: keynum = K_WIN; break;
#define SDL_SCANCODE_INSERT: keynum = K_INS; break;
#define SDL_SCANCODE_DELETE: keynum = K_DEL; break;
#define SDL_SCANCODE_PAGEDOWN: keynum = K_PGDN; break;
#define SDL_SCANCODE_PAGEUP: keynum = K_PGUP; break;
#define SDL_SCANCODE_HOME: keynum = K_HOME; break;
#define SDL_SCANCODE_END: keynum = K_END; break;
#define SDL_SCANCODE_KP_1: keynum = numLock ? '1' : K_KP_END; break;
#define SDL_SCANCODE_KP_2: keynum = numLock ? '2' : K_KP_DOWNARROW; break;
#define SDL_SCANCODE_KP_3: keynum = numLock ? '3' : K_KP_PGDN; break;
#define SDL_SCANCODE_KP_4: keynum = numLock ? '4' : K_KP_LEFTARROW; break;
#define SDL_SCANCODE_KP_5: keynum = numLock ? '5' : K_KP_5; break;
#define SDL_SCANCODE_KP_6: keynum = numLock ? '6' : K_KP_RIGHTARROW; break;
#define SDL_SCANCODE_KP_7: keynum = numLock ? '7' : K_KP_HOME; break;
#define SDL_SCANCODE_KP_8: keynum = numLock ? '8' : K_KP_UPARROW; break;
#define SDL_SCANCODE_KP_9: keynum = numLock ? '9' : K_KP_PGUP; break;
#define SDL_SCANCODE_KP_0: keynum = numLock ? '0' : K_KP_INS; break;
#define SDL_SCANCODE_KP_PERIOD: keynum = K_KP_DEL; break;
#define SDL_SCANCODE_KP_ENTER: keynum = K_KP_ENTER; break;
#define SDL_SCANCODE_KP_PLUS: keynum = K_KP_PLUS; break;
#define SDL_SCANCODE_KP_MINUS: keynum = K_KP_MINUS; break;
#define SDL_SCANCODE_KP_DIVIDE: keynum = K_KP_SLASH; break;
#define SDL_SCANCODE_KP_MULTIPLY: keynum = '*'; break;
#define SDL_SCANCODE_NUMLOCKCLEAR: keynum = K_KP_NUMLOCK; break;
#define SDL_SCANCODE_CAPSLOCK: keynum = K_CAPSLOCK; break;
#define SDL_SCANCODE_APPLICATION: keynum = K_WIN; break; // (compose key) ???
#define SDL_SCANCODE_SLASH: keynum = '/'; break;
#define SDL_SCANCODE_PERIOD: keynum = '.'; break;
#define SDL_SCANCODE_SEMICOLON: keynum = ';'; break;
#define SDL_SCANCODE_APOSTROPHE: keynum = '\''; break;
#define SDL_SCANCODE_COMMA: keynum = ','; break;
#define SDL_SCANCODE_PRINTSCREEN:
#endif
/*
=============
SDLash_KeyEvent
@ -39,7 +103,7 @@ static void SDLash_KeyEvent( SDL_KeyboardEvent key )
int keynum = key.keysym.scancode;
qboolean numLock = SDL_GetModState() & KMOD_NUM;
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
if( SDL_IsTextInputActive() && down )
{
if( SDL_GetModState() & KMOD_CTRL )
@ -53,7 +117,7 @@ static void SDLash_KeyEvent( SDL_KeyboardEvent key )
return;
}
}
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
#define DECLARE_KEY_RANGE( min, max, repl ) \
if( keynum >= (min) && keynum <= (max) ) \
@ -61,7 +125,6 @@ static void SDLash_KeyEvent( SDL_KeyboardEvent key )
keynum = keynum - (min) + (repl); \
}
#if XASH_SDL == 2
DECLARE_KEY_RANGE( SDL_SCANCODE_A, SDL_SCANCODE_Z, 'a' )
else DECLARE_KEY_RANGE( SDL_SCANCODE_1, SDL_SCANCODE_9, '1' )
else DECLARE_KEY_RANGE( SDL_SCANCODE_F1, SDL_SCANCODE_F12, K_F1 )
@ -129,6 +192,7 @@ static void SDLash_KeyEvent( SDL_KeyboardEvent key )
host.force_draw_version_time = host.realtime + FORCE_DRAW_VERSION_TIME;
break;
}
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
// don't console spam on known functional buttons, but not used in engine
case SDL_SCANCODE_MUTE:
case SDL_SCANCODE_VOLUMEUP:
@ -136,6 +200,7 @@ static void SDLash_KeyEvent( SDL_KeyboardEvent key )
case SDL_SCANCODE_BRIGHTNESSDOWN:
case SDL_SCANCODE_BRIGHTNESSUP:
return;
#endif
case SDL_SCANCODE_UNKNOWN:
{
if( down ) Con_Reportf( "SDLash_KeyEvent: Unknown scancode\n" );

View File

@ -25,9 +25,13 @@ GNU General Public License for more details.
#include "vid_common.h"
static SDL_Joystick *joy;
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
static SDL_GameController *gamecontroller;
#endif // XASH_SDL == 2
#else // SDL_VERSION_ATLEAST( 2, 0, 0 )
#define SDL_WarpMouseInWindow( win, x, y ) SDL_WarpMouse( ( x ), ( y ) )
#endif
/*
=============
@ -48,11 +52,7 @@ Platform_SetMousePos
*/
void Platform_SetMousePos( int x, int y )
{
#if XASH_SDL == 2
SDL_WarpMouseInWindow( host.hWnd, x, y );
#else
SDL_WarpMouse( x, y );
#endif
}
/*
@ -63,7 +63,7 @@ Platform_GetClipobardText
*/
void Platform_GetClipboardText( char *buffer, size_t size )
{
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
char *sdlbuffer = SDL_GetClipboardText();
if( !sdlbuffer )
@ -71,9 +71,9 @@ void Platform_GetClipboardText( char *buffer, size_t size )
Q_strncpy( buffer, sdlbuffer, size );
SDL_free( sdlbuffer );
#else
#else // SDL_VERSION_ATLEAST( 2, 0, 0 )
buffer[0] = 0;
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
}
/*
@ -84,9 +84,9 @@ Platform_SetClipobardText
*/
void Platform_SetClipboardText( const char *buffer, size_t size )
{
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
SDL_SetClipboardText( buffer );
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
}
/*
@ -108,9 +108,9 @@ SDLash_EnableTextInput
*/
void Platform_EnableTextInput( qboolean enable )
{
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
enable ? SDL_StartTextInput() : SDL_StopTextInput();
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
}
/*
@ -148,10 +148,10 @@ static int SDLash_JoyInit_Old( int numjoy )
return 0;
}
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
for( i = 0; i < num; i++ )
Con_Reportf( "%i\t: %s\n", i, SDL_JoystickNameForIndex( i ) );
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
Con_Reportf( "Pass +set joy_index N to command line, where N is number, to select active joystick\n" );
@ -163,7 +163,7 @@ static int SDLash_JoyInit_Old( int numjoy )
return 0;
}
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
Con_Reportf( "Selected joystick: %s\n"
"\tAxes: %i\n"
"\tHats: %i\n"
@ -173,13 +173,13 @@ static int SDLash_JoyInit_Old( int numjoy )
SDL_JoystickNumButtons( joy ), SDL_JoystickNumBalls( joy ) );
SDL_GameControllerEventState( SDL_DISABLE );
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
SDL_JoystickEventState( SDL_ENABLE );
return num;
}
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
/*
=============
SDLash_JoyInit_New
@ -238,19 +238,19 @@ static int SDLash_JoyInit_New( int numjoy )
return 0;
}
// was added in SDL2-2.0.6, allow build with earlier versions just in case
#if SDL_MAJOR_VERSION > 2 || SDL_MINOR_VERSION > 0 || SDL_PATCHLEVEL >= 6
#if SDL_VERSION_ATLEAST( 2, 0, 6 )
Con_Reportf( "Selected joystick: %s (%i:%i:%i)\n",
SDL_GameControllerName( gamecontroller ),
SDL_GameControllerGetVendor( gamecontroller ),
SDL_GameControllerGetProduct( gamecontroller ),
SDL_GameControllerGetProductVersion( gamecontroller ));
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 6 )
SDL_GameControllerEventState( SDL_ENABLE );
SDL_JoystickEventState( SDL_DISABLE );
return num;
}
#endif // XASH_SDL == 2
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
/*
=============
@ -260,12 +260,12 @@ Platform_JoyInit
*/
int Platform_JoyInit( int numjoy )
{
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
// SDL_Joystick is now an old API
// SDL_GameController is preferred
if( !Sys_CheckParm( "-sdl_joy_old_api" ) )
return SDLash_JoyInit_New(numjoy);
#endif // XASH_SDL == 2
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
return SDLash_JoyInit_Old(numjoy);
}

View File

@ -24,6 +24,15 @@ GNU General Public License for more details.
#define SAMPLE_16BIT_SHIFT 1
#define SECONDARY_BUFFER_SIZE 0x10000
#if ! SDL_VERSION_ATLEAST( 2, 0, 0 )
#include <stdlib.h>
#define SDL_setenv setenv
#define SDL_GetCurrentAudioDriver() "legacysdl"
#define SDL_OpenAudioDevice( a, b, c, d, e ) SDL_OpenAudio( ( c ), ( d ) )
#define SDL_CloseAudioDevice( a ) SDL_CloseAudio()
#define SDL_PauseAudioDevice( a, b ) SDL_PauseAudio( ( b ) )
#endif
/*
=======================================================================
Global variables. Must be visible to window-procedure function
@ -76,10 +85,8 @@ qboolean SNDDMA_Init( void )
// even if we don't have PA
// we still can safely set env variables
#if XASH_SDL == 2
SDL_setenv( "PULSE_PROP_application.name", GI->title, 1 );
SDL_setenv( "PULSE_PROP_media.role", "game", 1 );
#endif
memset( &desired, 0, sizeof( desired ) );
desired.freq = SOUND_DMA_SPEED;
@ -88,10 +95,7 @@ qboolean SNDDMA_Init( void )
desired.channels = 2;
desired.callback = SDL_SoundCallback;
#if XASH_SDL == 2
sdl_dev = SDL_OpenAudioDevice( NULL, 0, &desired, &obtained, 0 );
#endif
sdl_dev = SDL_OpenAudio( &desired, &obtained );
if( !sdl_dev )
{
@ -121,11 +125,7 @@ qboolean SNDDMA_Init( void )
dma.buffer = Z_Malloc( dma.samples * 2 );
dma.samplepos = 0;
#if XASH_SDL == 2
Con_Printf( "Using SDL audio driver: %s @ %d Hz\n", SDL_GetCurrentAudioDriver( ), obtained.freq );
#else
Con_Printf( "Using SDL audio driver @ %d Hz\n", obtained.freq );
#endif
SNDDMA_Activate( true );
@ -230,10 +230,7 @@ void SNDDMA_Shutdown( void )
SNDDMA_Activate( false );
#ifndef __EMSCRIPTEN__
#if XASH_SDL == 2
SDL_CloseAudioDevice( sdl_dev );
#endif
SDL_CloseAudio( );
#endif
}
@ -259,10 +256,6 @@ between a deactivate and an activate.
*/
void SNDDMA_Activate( qboolean active )
{
#if XASH_SDL == 2
SDL_PauseAudioDevice( sdl_dev, !active );
#else
SDL_PauseAudio( !active );
#endif
}
#endif // XASH_SOUND == SOUND_SDL

View File

@ -31,7 +31,7 @@ struct
struct
{
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST(2, 0, 0)
SDL_Renderer *renderer;
SDL_Texture *tex;
#endif
@ -45,7 +45,7 @@ qboolean SW_CreateBuffer( int width, int height, uint *stride, uint *bpp, uint *
sw.width = width;
sw.height = height;
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST(2, 0, 0)
if( sw.renderer )
{
unsigned int format = SDL_GetWindowPixelFormat( host.hWnd );
@ -115,11 +115,11 @@ qboolean SW_CreateBuffer( int width, int height, uint *stride, uint *bpp, uint *
}
#endif
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
if( !sw.renderer )
{
sw.win = SDL_GetWindowSurface( host.hWnd );
#else
#else // SDL_VERSION_ATLEAST( 2, 0, 0 )
{
sw.win = SDL_GetVideoSurface();
#endif
@ -154,7 +154,7 @@ qboolean SW_CreateBuffer( int width, int height, uint *stride, uint *bpp, uint *
void *SW_LockBuffer( void )
{
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
if( sw.renderer )
{
void *pixels;
@ -169,22 +169,22 @@ void *SW_LockBuffer( void )
sw.win = SDL_GetWindowSurface( host.hWnd );
//if( !sw.win )
//SDL_GetWindowSurface( host.hWnd );
#else
#else // SDL_VERSION_ATLEAST( 2, 0, 0 )
sw.win = SDL_GetVideoSurface();
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
// prevent buffer overrun
if( !sw.win || sw.win->w < sw.width || sw.win->h < sw.height )
return NULL;
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
if( sw.surf )
{
SDL_LockSurface( sw.surf );
return sw.surf->pixels;
}
else
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
{
// real window pixels (x11 shm region, dma buffer, etc)
// or SDL_Renderer texture if not supported
@ -195,7 +195,7 @@ void *SW_LockBuffer( void )
void SW_UnlockBuffer( void )
{
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
if( sw.renderer )
{
SDL_Rect src, dst;
@ -227,14 +227,14 @@ void SW_UnlockBuffer( void )
SDL_BlitSurface( sw.surf, &src, sw.win, &dst );
return;
}
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
// already blitted
SDL_UnlockSurface( sw.win );
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
SDL_UpdateWindowSurface( host.hWnd );
#endif
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
}
int R_MaxVideoModes( void )
@ -254,7 +254,7 @@ vidmode_t *R_GetVideoMode( int num )
static void R_InitVideoModes( void )
{
#if XASH_SDL == 2
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
int displayIndex = 0; // TODO: handle multiple displays somehow
int i, modes;
@ -299,8 +299,11 @@ static void R_InitVideoModes( void )
num_vidmodes++;
}
#else
int i;
#else // SDL_VERSION_ATLEAST( 2, 0, 0 )
# error TODO
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
}
static void R_FreeVideoModes( void )
@ -405,6 +408,7 @@ GL_UpdateSwapInterval
*/
void GL_UpdateSwapInterval( void )
{
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
// disable VSync while level is loading
if( cls.state < ca_active )
{
@ -418,6 +422,7 @@ void GL_UpdateSwapInterval( void )
if( SDL_GL_SetSwapInterval( gl_vsync->value ) )
Con_Reportf( S_ERROR "SDL_GL_SetSwapInterval: %s\n", SDL_GetError( ) );
}
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
}
/*
@ -429,12 +434,13 @@ always return false
*/
qboolean GL_DeleteContext( void )
{
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
if( glw_state.context )
{
SDL_GL_DeleteContext(glw_state.context);
glw_state.context = NULL;
}
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
return false;
}
@ -445,12 +451,13 @@ GL_CreateContext
*/
qboolean GL_CreateContext( void )
{
#if SDL_VERSION_ATLEAST(2, 0, 0)
if( ( glw_state.context = SDL_GL_CreateContext( host.hWnd ) ) == NULL)
{
Con_Reportf( S_ERROR "GL_CreateContext: %s\n", SDL_GetError());
return GL_DeleteContext();
}
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
return true;
}
@ -461,12 +468,13 @@ GL_UpdateContext
*/
qboolean GL_UpdateContext( void )
{
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
if( SDL_GL_MakeCurrent( host.hWnd, glw_state.context ))
{
Con_Reportf( S_ERROR "GL_UpdateContext: %s\n", SDL_GetError());
return GL_DeleteContext();
}
#endif // SDL_VERSION_ATLEAST( 2, 0, 0 )
return true;
}