Procházet zdrojové kódy

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

It has a lot of complex validation and locking we want to avoid here.
Ryan C. Gordon před 1 rokem
rodič
revize
5e1d9d19a4
1 změnil soubory, kde provedl 7 přidání a 1 odebrání
  1. 7 1
      src/audio/SDL_audio.c

+ 7 - 1
src/audio/SDL_audio.c

@@ -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) {