Я смотрю на PyOpenAL для некоторых нужд звука с Python (очевидно). Документация скудная (состоит из демонстрационного скрипта, который не работает без изменений), но, насколько я могу судить, существует два уровня. Прямая упаковка вызовов OpenAL и облегченная «питоническая» оболочка - это последнее, что меня интересует. В частности, как вы правильно убираете? Если мы возьмем небольшой пример:
import time
import pyopenal
pyopenal.init(None)
l = pyopenal.Listener(22050)
b = pyopenal.WaveBuffer("somefile.wav")
s = pyopenal.Source()
s.buffer = b
s.looping = False
s.play()
while s.get_state() == pyopenal.AL_PLAYING:
time.sleep(1)
pyopenal.quit()
Как таковое, сообщение выводится на терминал по принципу «один источник не удален, один буфер не удален». Но я предполагаю, что мы не можем использовать собственные вызовы OpenAL с этими объектами, так как я могу правильно очистить?
EDIT:
В конце концов я просто отказался от pyopenal и написал небольшую оболочку ctypes поверх OpenAL и alure (pyopenal предоставляет прямые функции OpenAL, но я продолжал получать SIGFPE). Все еще любопытно, что я должен был делать здесь.