diff --git a/extra/audio/engine/engine.factor b/extra/audio/engine/engine.factor index 23aeb891b4..b618c4b608 100644 --- a/extra/audio/engine/engine.factor +++ b/extra/audio/engine/engine.factor @@ -285,7 +285,7 @@ M: audio-engine dispose* al-buffers [ clip swap queue-clip-buffer ] each clip audio-engine clips>> push clip - ] [ f ] if ; + ] [ generator dispose f ] if ; M: audio-clip dispose* [ dup audio-engine>> clips>> remove! drop ] @@ -297,7 +297,8 @@ M: static-audio-clip dispose* M: streaming-audio-clip dispose* [ call-next-method ] - [ al-buffers>> [ length ] keep alDeleteBuffers ] bi ; + [ generator>> dispose ] + [ al-buffers>> [ length ] keep alDeleteBuffers ] tri ; : play-clip ( audio-clip -- ) [ update-source ] diff --git a/extra/audio/engine/test/test.factor b/extra/audio/engine/test/test.factor index 3107b96e7a..bbc6c339e9 100644 --- a/extra/audio/engine/test/test.factor +++ b/extra/audio/engine/test/test.factor @@ -14,12 +14,14 @@ M: noise-generator generate-audio drop 4096 [ -4096 4096 [a,b] random ] short-array{ } replicate-as 8192 ; +M: noise-generator dispose + drop ; :: audio-engine-test ( -- ) "vocab:audio/engine/test/loop.aiff" read-audio :> loop-sound "vocab:audio/engine/test/once.wav" read-audio :> once-sound 0 :> i! - :> engine + f 4 :> engine engine start-audio* engine T{ audio-source f { 1.0 0.0 0.0 } 1.0 { 0.0 0.0 0.0 } f } loop-sound t