Parcourir la source

directsound: recalculate audiospec size before creating secondary buffer.

I think this was a bug before? Maybe I'm misunderstanding this, but it looks
like it was working because we allocate room for 8 chunks...
Ryan C. Gordon il y a 9 ans
Parent
commit
7a8e4cb019
1 fichiers modifiés avec 2 ajouts et 3 suppressions
  1. 2 3
      src/audio/directsound/SDL_directsound.c

+ 2 - 3
src/audio/directsound/SDL_directsound.c

@@ -361,9 +361,6 @@ CreateSecondary(_THIS, HWND focus)
     wfmt.nBlockAlign = wfmt.nChannels * (wfmt.wBitsPerSample / 8);
     wfmt.nAvgBytesPerSec = wfmt.nSamplesPerSec * wfmt.nBlockAlign;
 
-    /* Update the fragment size as size in bytes */
-    SDL_CalculateAudioSpec(&this->spec);
-
     /* Try to set primary mixing privileges */
     if (focus) {
         result = IDirectSound_SetCooperativeLevel(sndObj,
@@ -447,6 +444,8 @@ DSOUND_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
         case AUDIO_F32:
             tried_format = SDL_TRUE;
             this->spec.format = test_format;
+            /* Update the fragment size as size in bytes */
+            SDL_CalculateAudioSpec(&this->spec);
             this->hidden->num_buffers = CreateSecondary(this, NULL);
             if (this->hidden->num_buffers > 0) {
                 valid_format = SDL_TRUE;