
Quoth Achim Schneider
Donn Cave
wrote: I imagine I'm at fault somewhere in this, since I am also responsible for the GHC port to Haiku, but just wondering if this suggests an obvious course of inquiry to anyone. I assume it's not working as intended, as from the documentation I would rather have guessed that -thread would be required in this situation.
Could it be that Haiku is expecting BeOS threads but you give it UNIX processes? It might be that all threads serving a GUI app must be part of the same team.
No, I'm not creating any other threads or processes, other than the window thread that's implicitly created by the window API. If it helps, a coarse outline of the API: class W : public BWindow { W(...params...): BWindow(...params...) { ... initialize graphic elements } void MessageReceived(BMessage *msg) { ... respond to event by calling Haskell function // will lead to thread abort if linked -threaded. } }; main thread: W *w = W(...params...); w->Show(); // thread spawned by this member function. I haven't written any code to support the above - BWindow::Show() was provided by the platform. I did of course have to do a lot of hacking around with FFI stuff. The BWindow-derived object stores a table of foreign wrapper pointers to callback functions that take a StablePtr, etc., and I wouldn't know where to start thinking about that works with garbage collection. Donn Cave, donn@avvanta.com