From 22ff45f5d009adbf3fd5e77d33ce013cc793712e Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sat, 20 Aug 2022 03:17:51 +0300 Subject: [PATCH] engine: platform: add audio capture shutdown functions --- engine/platform/android/snd_opensles.c | 5 +++++ engine/platform/linux/s_alsa.c | 5 +++++ engine/platform/platform.h | 1 + engine/platform/sdl/s_sdl.c | 20 +++++++++++++++++--- engine/platform/stub/s_stub.c | 5 +++++ 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/engine/platform/android/snd_opensles.c b/engine/platform/android/snd_opensles.c index 0568ee61..fb729025 100644 --- a/engine/platform/android/snd_opensles.c +++ b/engine/platform/android/snd_opensles.c @@ -268,5 +268,10 @@ qboolean VoiceCapture_RecordStart( void ) void VoiceCapture_RecordStop( void ) { +} + +void VoiceCapture_Shutdown( void ) +{ + } #endif diff --git a/engine/platform/linux/s_alsa.c b/engine/platform/linux/s_alsa.c index 3a0cc7b3..806e9151 100644 --- a/engine/platform/linux/s_alsa.c +++ b/engine/platform/linux/s_alsa.c @@ -356,4 +356,9 @@ void VoiceCapture_RecordStop( void ) } +void VoiceCapture_Shutdown( void ) +{ + +} + #endif diff --git a/engine/platform/platform.h b/engine/platform/platform.h index 51c5c3fd..ad0c546d 100644 --- a/engine/platform/platform.h +++ b/engine/platform/platform.h @@ -162,6 +162,7 @@ void SNDDMA_Activate( qboolean active ); // pause audio // void SNDDMA_LockSound( void ); // unused // void SNDDMA_UnlockSound( void ); // unused qboolean VoiceCapture_Init( void ); +void VoiceCapture_Shutdown( void ); qboolean VoiceCapture_RecordStart( void ); void VoiceCapture_RecordStop( void ); diff --git a/engine/platform/sdl/s_sdl.c b/engine/platform/sdl/s_sdl.c index 39526e2a..51e303f5 100644 --- a/engine/platform/sdl/s_sdl.c +++ b/engine/platform/sdl/s_sdl.c @@ -44,7 +44,7 @@ so it can unlock and free the data block after it has been played. ======================================================================= */ static int sdl_dev; -static SDL_AudioDeviceID in_dev; +static SDL_AudioDeviceID in_dev = 0; static SDL_AudioFormat sdl_format; //static qboolean snd_firsttime = true; @@ -259,7 +259,7 @@ qboolean VoiceCapture_Init( void ) in_dev = SDL_OpenAudioDevice( NULL, SDL_TRUE, &wanted, &spec, 0 ); - if( SDLash_IsAudioError( in_dev ) ) + if( SDLash_IsAudioError( in_dev )) { Con_Printf( "VoiceCapture_Init: error creating capture device (%s)\n", SDL_GetError() ); return false; @@ -288,7 +288,21 @@ VoiceCapture_RecordStop */ void VoiceCapture_RecordStop( void ) { - SDL_PauseAudioDevice( in_dev, SDL_TRUE ); + if( in_dev ) + SDL_PauseAudioDevice( in_dev, SDL_TRUE ); +} + +/* +========== +VoiceCapture_Shutdown +========== +*/ +void VoiceCapture_Shutdown( void ) +{ + if( !in_dev ) + return; + + SDL_CloseAudioDevice( in_dev ); } #endif // XASH_SOUND == SOUND_SDL diff --git a/engine/platform/stub/s_stub.c b/engine/platform/stub/s_stub.c index bb1684b5..53c12543 100644 --- a/engine/platform/stub/s_stub.c +++ b/engine/platform/stub/s_stub.c @@ -109,5 +109,10 @@ void VoiceCapture_RecordStop( void ) } +void VoiceCapture_Shutdown( void ) +{ + +} + #endif #endif