SDL_CloseAudio() Приостановить в Windows

При использовании SDL мне нужно непрерывно воспроизводить аудио / видео, поэтому после воспроизведения аудио / видео мне нужно позвонить SDL_CloseAudio() закрыть аудиопоток или при воспроизведении последовательного аудио / видео, используя SDL_OpenAudio()Я получу ошибку, потому что при последнем воспроизведении не закрывалось устройство.

Должен быть обратный вызов, который вы должны подключить к SDL перед вызовом SDL_OpenAudio()и приходит беда.

Я заметил, что вы не можете получить доступ к аудиопотоку, напрямую созданному внутренним SDL (и он действительно создал этот поток). Единственный способ закрыть аудио SDL_CloseAudio()и прежде чем звонить, лучше позвони SDL_LockAudio() первый. SDL_LockAudio() убедитесь, что аудио обратный вызов не был вызван его внутренним потоком, а затем является безопасной точкой для вызова SDL_CloseAudio,

Используя флаг, мы можем убедиться, что обратный вызов не был вызван внутренним аудиопотоком SDL, а затем мы пытаемся заблокировать звук, вызывая SDL_LockAudio()Я думаю, что это совершенно безопасно, и иногда это действительно хорошо работает, но в других случаях все еще приостановить в SDL_CloseAudio() призвание.

Я пытался изменить SDL_CloseAudio(), В исходном коде SDL аудиомодуль является единичным, мы можем получить доступ к его аудиопотоку (это SDL_Thread экземпляр), используя SDL_KillThread(), мы можем прервать аудиопоток, это действительно совершенно безопасно, но я не уверен, вызовет ли такая грубая сила какие-либо другие проблемы.

Мой вопрос: почему операция блокировки успешно, но операция закрытия все еще приостановлена?

0 ответов

Другие вопросы по тегам