
On 05.11.2003, at 00:34, Marc A. Ziegert wrote:
i've installed ghc-6.3.20031102 (still the "-lGL" <--> "-lGLU" bug in package.conf). that version works now, thanks.
now i want to use ghci, especially with forkIO mainLoop , but that does not seem to work anymore. is that a forkIO bug?
Hmm... did you build ghc with the --enable-threaded-rts flag? If so, you should be using forkOS instead of forkIO; forkIO creates a lightweight thread, but most OpenGL implementations require a (heavyweight) OS thread to run reliably. With GHC 6.3 --enable-threaded-rts, this means you can call GLUT/OpenGL from the main thread, from threads created using forkOS, and from foreign exported functions, but not from threads created using forkIO. If you're not using --enable-threaded-rts, then you could encounter a different problem: GHCi only gets a chance to run while the GLUT mainLoop is inside a callback, and while GHCi is waiting for input using readline, the GLUT mainLoop will be blocked. Things might work if you build GHC without readline support and install an idle callback into the GLUT event loop. In both cases, keep in mind that all the OpenGL drawing has to be done from the thread that GLUT is running in. You can use MVars to communicate with that thread from the GHCi prompt, but doing OpenGL drawing from the GHCi prompt while a GLUT mainLoop is running in the background will never work reliably. Grüße, Wolfgang