On Wednesday, 8 July 2015 at 13:08:08 UTC, Adrian Matoga wrote:
I run up against the same problem with threads when trying to
play audio asynchronously - the callbacks are made from another
thread which is created outside D. I solved it by disabling GC
in callbacks that might invoke it, but it seems there's another
solution to try out.
Why would such a callback need to allocate memory? For a similar
project I used PortAudio with the D bindings [1]. In the
callback, I just copy data from the D data stream to the port
audio buffers and consume the copied data from the data stream.
It works perfectly without any GC calls.
[1] https://github.com/D-Programming-Deimos/portaudio