John M McIntosh wrote:
Brad as you know the VM is single threaded so you need to return quickly from a plugin call so the interpreter can continue grinding thru bytecodes. Really the question is how are you doing the async processing of the sound? It's not clear from your description.
At this point, I'm not worried about Squeak continuing (unless there is something I'm missing). I just want to call the plugin, let it play 5 secs, and return back to Squeak.
brad
On 19-Nov-05, at 6:42 PM, Brad Fuller wrote:
The plugin that I'm creating seems to return too quickly. I have a simple test that plays a sine wave and waits 5 seconds (using usleep). The problem is that it stops the sine wave and returns in about a half a second (I hear the sine wave but just a blip. And no errors from the external code.) The code works fine outside of Squeak, but not called from Squeak.
The plugin does 2 simple things:
- Starts a stream that calls a callback routine (below)
- The callback fills a buffer for the sine wave data and then returns
After waiting 5secs, the main line cleans up and exits.
Are there any particular issues with callbacks in Squeak? Do I need to compile/link with anything special? It doesn't seem like this should be a problem since Squeak is single-threaded. If anything, I would think that the return would be slower not quicker. BTW, usleep returns w/o error.
Any ideas or pointers much appreciated!
brad