On Tuesday, 29 October 2013 at 14:13:40 UTC, Benjamin Thaut wrote:
I also found that for all pp members which take pointers to COM
interfaces. For example the "CreateMasteringVoice"
"IXAudio2MasteringVoice** ppMasteringVoice" member. In D
interfaces are already reference types. So it should read
"IXAudio2MasteringVoice* ppMasteringVoice". Then you can also
avoid the ugly casting you do in your examples. When fixing
this it still doesn't work however.
i have removed unneeded ptr-to-ptr in args, still doesn't works.
but, maybe you can tell something about this code?
//----------------------------
class XACallbacks : ComObject, IXAudio2EngineCallback
{
extern(Windows):
void OnProcessingPassStart() {}
void OnProcessingPassEnd () {}
void OnCriticalError (HRESULT Error) { writeln(Error); }
}
...
XACallbacks xcb = new XACallbacks ();
XAudio2Create( g_engine, XAUDIO2_DEBUG_ENGINE );
g_engine.RegisterForCallbacks(xcb); // <- after setting this
callback crashes on any call later, probably stack corruption
...
//----------------------------