Quoth Achim Schneider <bars...@web.de>,
> Donn Cave <d...@avvanta.com> 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, d...@avvanta.com

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to