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()
, мы можем прервать аудиопоток, это действительно совершенно безопасно, но я не уверен, вызовет ли такая грубая сила какие-либо другие проблемы.
Мой вопрос: почему операция блокировки успешно, но операция закрытия все еще приостановлена?