Is it possible to run a McCLIM and a CL-SDL (cl-sdl.sourceforge.net) application within the same Lisp image?
When I try this with CMUCL, only the CL-SDL application runs and the McCLIM one--say, the CLIM Listener--is frozen, i.e. the window is not refreshed and does not process input events. Things do not change if I start the CLIM Listener with :new-process t.
I understand that the OpenGL/SDL event loop is a bit "pervasive", but I wonder whether there are any workarounds.
Paolo
Paolo Amoroso amoroso@mclink.it writes:
Is it possible to run a McCLIM and a CL-SDL (cl-sdl.sourceforge.net) application within the same Lisp image?
When I try this with CMUCL, only the CL-SDL application runs and the McCLIM one--say, the CLIM Listener--is frozen, i.e. the window is not refreshed and does not process input events. Things do not change if I start the CLIM Listener with :new-process t.
I have been suggested (thanks David!) that, given CMUCL's cooperative multiprocessing model, the CL-SDL application thread and the Listener thread may not be yielding regularly. So, in the file examples/2d-test.lisp of the CL-SDL distribution, I tried adding a call to MP:PROCESS-YIELD as the last expression in the LAMBDA of MAKE-UPDATE-FN.
This way both the CL-SDL demo and the Listener can run at the same time. CPU usage is over 99% even with just the demo, but OpenGL applications are quite demanding.
Cool.
Paolo