]> gitweb.factorcode.org Git - factor.git/commitdiff
audio.engine: dispose generator for streaming-audio-clip when it finishes
authorJoe Groff <arcata@gmail.com>
Sun, 24 Jan 2010 20:44:01 +0000 (12:44 -0800)
committerJoe Groff <arcata@gmail.com>
Sun, 24 Jan 2010 20:45:51 +0000 (12:45 -0800)
extra/audio/engine/engine.factor
extra/audio/engine/test/test.factor

index 23aeb891b463f1732d9ca9e0a48ac1774d9bef3e..b618c4b608597b06d54eff76049dd3f26fad2db9 100644 (file)
@@ -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 ]
index 3107b96e7a7843cd335b9e4a2a6a13a670be9237..bbc6c339e9f6b5359735d83d3fb256a676d9bb3a 100644 (file)
@@ -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!
-    <standard-audio-engine> :> engine
+    f 4 <audio-engine> :> 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