Quoth Achim Schneider <[email protected]>,
> Donn Cave <[email protected]> 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, [email protected]
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe