2009-04-24 5 views
0

Ich suche PyOpenAL für einige Sound-Bedürfnisse mit Python (natürlich). Die Dokumentation ist spärlich (bestehend aus einem Demo-Skript, das nicht unmodifiziert funktioniert), aber soweit ich das beurteilen kann, gibt es zwei Ebenen. Direktes Wrappen von OpenAL-Calls und ein leichtgewichtiger "Pythonic" -Wrapper - mir geht es um letzteres. Insbesondere, wie bereinigen Sie richtig? Wenn wir ein kleines Beispiel nehmen:Wie säubere ich PyOpenAL richtig?

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() 

Wie es ist, wird eine Nachricht an den Linien der zu dem Endgerät gedruckt auf „einer Quelle nicht gelöscht, ein Puffer nicht gelöscht“. Aber ich gehe davon aus, dass wir die nativen OpenAL-Aufrufe mit diesen Objekten nicht nutzen können, also wie säubere ich richtig?

EDIT:

ich schließlich nur pyopenal ditched und schrieb ein kleines ctypes Wrapper über OpenAL und alure (pyopenal macht die gerade OpenAL Funktionen, aber ich wurde immer SIGFPE). Immer noch neugierig, was ich hier machen soll.

Antwort

1
#relese reference to l b and s 
del l 
del b 
del s 
#now the WaveBuffer and Source should be destroyed, so we could: 
pyopenal.quit() 

Wahrscheinlich de destructor von pyopenal ruft quit() vor Ausgang, so dass Sie es selbst brauchen nicht zu nennen.

+0

Sinn macht. Ich habe PyOpenAL nicht installiert ATM, also nehme ich dein Wort. – Bernard

Verwandte Themen