I didn't have access to my compute for longer than I thought, but I finally got around to this.

After some messing around, I not only managed to track down the cause, but I got it fixed and the Audio module for DSFML is back to where it was.


In one of my D classes, SoundStream, I defined a struct called Chunk, which held a chunk of sound data. It looks like this:

struct Chunk
{
  const(short)* samples;
  size_t sampleCount;
}


All of the streaming is actually happening in an extern(C++) interface instance, and with the help of Dustmite, the method that caused the initial error was this:

extern(C++) bool onGetData(SoundStream.Chunk* chunk);

I think because it has a D Class member as the parameter type in an extern(C++) class method the D compiler broke?

What I did to fix it was I changed Chunk from being a member of SoundStream and declared it as a extern(C++) struct instead. That changed onGetData to "extern(C++) bool onGetData(Chunk* chunk);" and the compiler was ok with that.

I might do some more testing to see if I can reproduce the error, but changing the parameter type fixed it for me.


Reply via email to