Quellcode durchsuchen

wasapi: Deal with device buffer sizes changing.

Otherwise, it would fill the previous size's worth of data into the current
size's buffer.

Fixes #11122.

(cherry picked from commit 5b0e838a7433daf0d44aff10574791cced63113e)
Ryan C. Gordon vor 5 Monaten
Ursprung
Commit
cc2352f842
1 geänderte Dateien mit 6 neuen und 0 gelöschten Zeilen
  1. 6 0
      src/audio/wasapi/SDL_wasapi.c

+ 6 - 0
src/audio/wasapi/SDL_wasapi.c

@@ -111,6 +111,12 @@ static int UpdateAudioStream(_THIS, const SDL_AudioSpec *oldspec)
         }
     }
 
+    /* if the device sample size changed, make sure we're asking for enough data. */
+    if (this->callbackspec.samples != this->spec.samples) {
+        this->callbackspec.samples = this->spec.samples;
+        SDL_CalculateAudioSpec(&this->callbackspec);
+    }
+
     /* make sure our scratch buffer can cover the new device spec. */
     if (this->spec.size > this->work_buffer_len) {
         Uint8 *ptr = (Uint8 *)SDL_realloc(this->work_buffer, this->spec.size);