mirror of https://github.com/encounter/SDL.git
audio: Make SDL_AudioDevice::shutdown an atomic value.
Just to make sure this get communicated to the audio thread properly.
This commit is contained in:
parent
015dd8dd1d
commit
c754662dda
|
@ -103,7 +103,7 @@ static const AudioBootStrap *const bootstrap[] = {
|
|||
&ESD_bootstrap,
|
||||
#endif
|
||||
#if SDL_AUDIO_DRIVER_NACL
|
||||
&NACLAUD_bootstrap,
|
||||
&NACLAUD_bootstrap,
|
||||
#endif
|
||||
#if SDL_AUDIO_DRIVER_NAS
|
||||
&NAS_bootstrap,
|
||||
|
@ -611,7 +611,7 @@ SDL_RunAudio(void *devicep)
|
|||
current_audio.impl.ThreadInit(device);
|
||||
|
||||
/* Loop, filling the audio buffers */
|
||||
while (!device->shutdown) {
|
||||
while (!SDL_AtomicGet(&device->shutdown)) {
|
||||
/* Fill the current buffer with sound */
|
||||
if (device->convert.needed) {
|
||||
stream = device->convert.buf;
|
||||
|
@ -874,7 +874,7 @@ static void
|
|||
close_audio_device(SDL_AudioDevice * device)
|
||||
{
|
||||
device->enabled = 0;
|
||||
device->shutdown = 1;
|
||||
SDL_AtomicSet(&device->shutdown, 1);
|
||||
if (device->thread != NULL) {
|
||||
SDL_WaitThread(device->thread, NULL);
|
||||
}
|
||||
|
|
|
@ -157,10 +157,10 @@ struct SDL_AudioDevice
|
|||
SDL_AudioStreamer streamer;
|
||||
|
||||
/* Current state flags */
|
||||
/* !!! FIXME: should be SDL_bool */
|
||||
SDL_atomic_t shutdown; /* true if we are signaling the play thread to end. */
|
||||
/* !!! FIXME: these should be SDL_bool */
|
||||
int iscapture;
|
||||
int enabled; /* true if device is functioning and connected. */
|
||||
int shutdown; /* true if we are signaling the play thread to end. */
|
||||
int paused;
|
||||
int opened;
|
||||
|
||||
|
|
Loading…
Reference in New Issue