Просмотр исходного кода

DOS: yield audio thread even when the ring buffer has space

x0r 1 неделя назад
Родитель
Сommit
ce85ee87f6
1 измененных файлов с 4 добавлено и 0 удалено
  1. 4 0
      src/audio/dos/SDL_dosaudio_sb.c

+ 4 - 0
src/audio/dos/SDL_dosaudio_sb.c

@@ -170,6 +170,10 @@ static bool DOSSOUNDBLASTER_WaitDevice(SDL_AudioDevice *device)
     struct SDL_PrivateAudioData *hidden = device->hidden;
     const int size = hidden->ring_size;
 
+    // Slow mixing can keep the ring below capacity indefinitely. Yield even
+    // when there is room so the cooperative main thread can process events.
+    DOS_Yield();
+
     for (;;) {
         // Available space = ring_size - (write - read).
         // ring_write is ours (audio thread only), ring_read is advanced by