diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index 989259ca1..2893c4908 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -221,6 +221,11 @@ SDL_AudioThreadInit_Default(_THIS) { /* no-op. */ } +static void +SDL_AudioThreadDeinit_Default(_THIS) +{ /* no-op. */ +} + static void SDL_AudioWaitDevice_Default(_THIS) { /* no-op. */ @@ -340,6 +345,7 @@ finish_audio_entry_points_init(void) FILL_STUB(DetectDevices); FILL_STUB(OpenDevice); FILL_STUB(ThreadInit); + FILL_STUB(ThreadDeinit); FILL_STUB(WaitDevice); FILL_STUB(PlayDevice); FILL_STUB(GetPendingBytes); @@ -712,6 +718,8 @@ SDL_RunAudio(void *devicep) /* Wait for the audio to drain. */ SDL_Delay(((device->spec.samples * 1000) / device->spec.freq) * 2); + current_audio.impl.ThreadDeinit(device); + return 0; } @@ -810,6 +818,8 @@ SDL_CaptureAudio(void *devicep) current_audio.impl.FlushCapture(device); + current_audio.impl.ThreadDeinit(device); + return 0; } diff --git a/src/audio/SDL_sysaudio.h b/src/audio/SDL_sysaudio.h index ca93eb28d..45e46df71 100644 --- a/src/audio/SDL_sysaudio.h +++ b/src/audio/SDL_sysaudio.h @@ -67,6 +67,7 @@ typedef struct SDL_AudioDriverImpl void (*DetectDevices) (void); int (*OpenDevice) (_THIS, void *handle, const char *devname, int iscapture); void (*ThreadInit) (_THIS); /* Called by audio thread at start */ + void (*ThreadDeinit) (_THIS); /* Called by audio thread at start */ void (*WaitDevice) (_THIS); void (*PlayDevice) (_THIS); int (*GetPendingBytes) (_THIS);