Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Merged r3138:3139 from branches/SDL-1.2: Don't init audio callback bu…
Browse files Browse the repository at this point in the history
…ffer.

(This already had a concession for devices opened via the 1.2 entry points,
 I've changed it to respect the environment variable and do it for all devices
 now.)
  • Loading branch information
icculus committed Jul 5, 2007
1 parent 0a28cb5 commit 640aec2
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/audio/SDL_audio.c
Expand Up @@ -144,6 +144,13 @@ static AudioBootStrap *bootstrap[] = {
NULL
};

/*
* If non-zero, use legacy behaviour (memset the callback buffer before call).
* Changed to NOT initializing the buffer before the callback in 1.2.12.
* Set environment SDL_AUDIO_MUST_INIT_BUFFERS=1 to get old behaviour.
*/
static int must_init_callback_buffer = 0;

static SDL_AudioDevice *
get_audio_device(SDL_AudioDeviceID id)
{
Expand Down Expand Up @@ -258,7 +265,6 @@ int SDLCALL
SDL_RunAudio(void *devicep)
{
SDL_AudioDevice *device = (SDL_AudioDevice *) devicep;
const int legacy_device = (device == open_devices[0]);
Uint8 *stream;
int stream_len;
void *udata;
Expand Down Expand Up @@ -303,7 +309,7 @@ SDL_RunAudio(void *devicep)
}

/* New code should fill buffer or set it to silence themselves. */
if (legacy_device) {
if ( must_init_callback_buffer ) {
SDL_memset(stream, silence, stream_len);
}

Expand Down Expand Up @@ -390,6 +396,9 @@ SDL_AudioInit(const char *driver_name)
int i = 0;
int initialized = 0;
int tried_to_init = 0;
const char *envr = SDL_getenv("SDL_AUDIO_MUST_INIT_BUFFERS");

must_init_callback_buffer = ((envr != NULL) && (SDL_atoi(envr)));

if (SDL_WasInit(SDL_INIT_AUDIO)) {
SDL_AudioQuit(); /* shutdown driver if already running. */
Expand Down

0 comments on commit 640aec2

Please sign in to comment.