I fixed the following bugs:

* enable-event & disable-event do not check if the event
is already enabled/disabled. This can lead to enabling
the idle callback more than once for a given window
which can break the event loop in various ways.
For instance, in current cl-opengl, rb-double enables
idle once per mouseclick and this leads to multiple
entires in *windows-with-idle-event* which in turn
means that the idle method will get called multiple times
breaking the logic.

* Currently the idle callback is disabled only in close,
and only when *windows-with-idle-event* is nil. We need to
do the same check in disable-event too. Currently this
manifests in gears.lisp. If you minimize the window,
(disable-event :idle) will get called but the callback
will continue to run -> 100% cpu usage.


Now for darwin, i fixed all the issues i could find.
It now works on sbcl/ccl/ccl64 with no issues. Instead of
forcing the glut event loop on the initial thread, i used
the trick from ccl opengl-ffi on sbcl too.

This means that, on sbcl and ccl/ccl64, a new thread is created
(GLUT-thread) which will run the glut event loop. This also
has the bonus of making cl-glut work without any changes under
slime. The only issue when developing interactively is that one
can not call glut functions from a thread other than GLUT-thread
_while_ the glut event loop is running. I added warnings to indicate
when the event loop runs/stops. If the glut event loop is not running
(example: leave-main-loop is called), you can call glut functions
from any thread and they will take effect when the glut event loop starts running again. This shouldn't affect normal development, i had to mention it because osx has the tendency to kill the process when one ignores this :-)

(All the changes apart from the bug fixes are only for darwin.)

Attachment: cl-opengl-darwin2.diff
Description: Binary data




_______________________________________________
cl-opengl-devel mailing list
cl-opengl-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cl-opengl-devel

Reply via email to