From d04bf5c10a3ac3d406a02f9a5c6734222b46c89a Mon Sep 17 00:00:00 2001 From: Jon Harper Date: Sun, 29 Sep 2013 19:37:08 +0200 Subject: [PATCH] rosetta-code.metronome: correct disposal of timer --- extra/rosetta-code/metronome/metronome.factor | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/extra/rosetta-code/metronome/metronome.factor b/extra/rosetta-code/metronome/metronome.factor index d9095bc065..e7fa848c2a 100644 --- a/extra/rosetta-code/metronome/metronome.factor +++ b/extra/rosetta-code/metronome/metronome.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors calendar circular colors.constants colors.hsv -concurrency.semaphores kernel math openal.example threads timers -ui ui.gadgets ui.gadgets.worlds ui.pens.solid ; +concurrency.semaphores continuations kernel math openal.example +threads timers ui ui.gadgets ui.gadgets.worlds ui.pens.solid ; IN: rosetta-code.metronome : bpm>duration ( bpm -- duration ) 60 swap / seconds ; @@ -32,9 +32,11 @@ IN: rosetta-code.metronome : start-metronome-timer ( bpm -- timer semaphore ) 0 [ (start-metronome-timer) ] keep ; +: run-metronome ( semaphore notes -- ) + [ open-metronome-window ] 2dip swap metronome-loop ; + : metronome ( bpm notes -- ) [ start-metronome-timer ] dip - [ open-metronome-window ] 2dip swap metronome-loop - stop-timer ; + [ run-metronome ] curry [ stop-timer ] [ ] cleanup ; ! example usage: 60 { 440 220 330 } metronome