C callback receives bad pointer argument
Marco Cosentino
cosentino.ma at gmail.com
Thu Jun 30 15:11:56 PDT 2011
Hi,
I'm approaching to D2 with writing a wrapper for the popular JACK2
client library.
I managed the following troubles:
Translated correctly the C callback style into D delegates types with alias.
Managed some segment faluts happened when not using toStringz() with
some "strings"
Managed the multithreaded model of jack using __gsharde for global
variables needed in a callback
Now I'm in trouble again but this time I can't find a solution without
some help.
Have a look at this code:
// jack.di
alias int function(jack_nframes_t nframes, void *arg) JackProcessCallback;
int jack_set_process_callback (jack_client_t *client,
JackProcessCallback process_callback, void *arg);
//simple_client.d
int
process (jack_nframes_t nframes, void *arg)
{
stderr.writeln("process() - data:", arg);
[...]
}
int main()
{
[...]
paTestData * data_ptr = &data;
stderr.writeln("main() - data:",data_ptr);
jack_set_process_callback (client, &process, data_ptr);
[...]
}
Execution gives:
main() - data:6B6AE0
process() - data:80
of course when trying to access the real data casting to its original
type I get a segmentation fault.
I think that part of the problem is that the process() callback runs
into a separate thread. What should I try?
Thanks,
Marco.
More information about the Digitalmars-d-learn
mailing list