From 18ab8654f586126b083a06916cc4aacf6b1c39dc Mon Sep 17 00:00:00 2001 From: Jonatan Liljedahl Date: Sun, 20 Nov 2011 15:14:43 +0100 Subject: [PATCH] SkipJack: Use Routine instead Avoids bug that Tasks are not always being restartable. Also it's cleaner and simpler since we don't need the extra features of Task, a plain Routine will do the job just fine. --- SCClassLibrary/Common/Control/SkipJack.sc | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/SCClassLibrary/Common/Control/SkipJack.sc b/SCClassLibrary/Common/Control/SkipJack.sc index 793489325..e6960c8f3 100644 --- a/SCClassLibrary/Common/Control/SkipJack.sc +++ b/SCClassLibrary/Common/Control/SkipJack.sc @@ -18,21 +18,25 @@ SkipJack { *stopAll { all.do(_.stop).clear; } init { |autostart=true| - task = Task ({ - if( verbose ) { ("SkipJack" + name + "starts.").postcln }; - while { dt.value.wait; stopTest.value.not } { updateFunc.value(this) }; - this.stop; - }, clock ? defaultClock); - if ( autostart, { this.start } ); + task = Routine { + if( verbose ) { ("SkipJack" + name + "starts.").postcln }; + while { dt.value.wait; stopTest.value.not } { updateFunc.value(this) }; + this.stop; + }; + if ( autostart ) { this.start }; } cmdPeriod { - task.stop.play; + task.play(clock ? defaultClock); if( verbose ) { ("SkipJack" + name + "is back up.").postcln }; } start { - task.stop.play; + if(task.isPlaying) { + if( verbose ) { ("SkipJack" + name + "already playing.").postcln }; + ^this; + }; + task.reset.play(clock ? defaultClock); all.add(this); CmdPeriod.add(this); if( verbose ) { ("SkipJack" + name + "started.").postcln }; -- 2.11.4.GIT