From 278d50c608e8d1ff8f7c6ff08bc03838a81e0ef1 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Tue, 24 Sep 2019 16:45:26 +0100 Subject: [PATCH] release-packaging/Classes/FluidNRTProcess.sc: Make process() send a done message to the language iff processing is successful, hopefully resolves #34 properly this time --- release-packaging/Classes/FluidNRTProcess.sc | 29 ++++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/release-packaging/Classes/FluidNRTProcess.sc b/release-packaging/Classes/FluidNRTProcess.sc index b47e0ad..d7292d6 100644 --- a/release-packaging/Classes/FluidNRTProcess.sc +++ b/release-packaging/Classes/FluidNRTProcess.sc @@ -22,20 +22,25 @@ FluidNRTProcess : Object{ } process{|...ugenArgs| - synth = { - ugen.performList(\kr, ugenArgs.collect{|a| a.asUGenInput} ++ Done.freeSelf) + var reply = '/done' ++ UniqueID.next; + synth = { + var ug = ugen.performList(\kr, ugenArgs.collect{|a| a.asUGenInput} ++ Done.freeSelf); + SendReply.kr(Done.kr(ug),reply) }.play(server); synth.postln; - forkIfNeeded{ - synth.waitForFree; - server.sync; - outputBuffers.do{|buf| - buf = server.cachedBufferAt(buf.asUGenInput); - buf.updateInfo; - server.sync; - }; - if(action.notNil){action.valueArray(outputBuffers)}; - }; + + OSCFunc({ + forkIfNeeded{ + synth.waitForFree; + server.sync; + outputBuffers.do{|buf| + buf = server.cachedBufferAt(buf.asUGenInput); + buf.updateInfo; + server.sync; + }; + if(action.notNil){action.valueArray(outputBuffers)}; + } + }, reply).oneShot; ^this; }