audio: Don't use SDL_BindAudioStream inside SDL_OpenAudioDeviceStream().

It has a lot of complex validation and locking we want to avoid here.
This commit is contained in:
Ryan C. Gordon 2024-02-13 15:23:27 -05:00
parent 5e6ae85b63
commit 5e1d9d19a4
No known key found for this signature in database
GPG key ID: 3C62BA43B5CCC412

View file

@ -1945,12 +1945,18 @@ SDL_AudioStream *SDL_OpenAudioDeviceStream(SDL_AudioDeviceID devid, const SDL_Au
stream = SDL_CreateAudioStream(spec, &device->spec);
}
if (!stream || (SDL_BindAudioStream(logdevid, stream) == -1)) {
if (!stream) {
failed = SDL_TRUE;
} else {
// don't do all the complicated validation and locking of SDL_BindAudioStream just to set a few fields here.
logdev->bound_streams = stream;
logdev->simplified = SDL_TRUE; // forbid further binding changes on this logical device.
stream->bound_device = logdev;
stream->simplified = SDL_TRUE; // so we know to close the audio device when this is destroyed.
UpdateAudioStreamFormatsPhysical(device);
if (callback) {
int rc;
if (iscapture) {