Open Odddity opened 1 year ago
After further investigation, I think it might not be a problem with cl-glfw but maybe with cl-opengl, or maybe I'm doing something wrong that I can't understand.
Compiling a file with this code in it is OK (does not signal a condition):
(defun toggle-wireframe-mode ()
(if (setf *wireframe-mode* (not *wireframe-mode*))
(gl:polygon-mode :front-and-back :line)
(gl:polygon-mode :front-and-back :fill)))
(def-key-callback key-callback (window key scancode action mod)
(declare (ignore window scancode mod))
(flet ((pressedp (keysym)
(and (eq key keysym) (eq action :press))))
(when (pressedp :escape)
(set-window-should-close))
(when (pressedp :semicolon)
(toggle-wireframe-mode))))
However, this form does signal the "failed AVER" error:
(def-key-callback key-callback (window key scancode action mod)
(declare (ignore window scancode mod))
;; (format t "~&~S" (list :key key :action action :mod mod))
(flet ((pressedp (keysym)
(and (eq key keysym) (eq action :press))))
(when (pressedp :escape)
(set-window-should-close))
(when (pressedp :semicolon)
(if (setf *wireframe-mode* (not *wireframe-mode*))
(gl:polygon-mode :front-and-back :line)
(gl:polygon-mode :front-and-back :fill)))))
Further poking around shows that compiling a def-key-callback form that has any OpenGL calls it in it will signal the error at compilation time. Example:
(def-key-callback key-callback (window key scancode action mod)
(declare (ignore window scancode mod key action))
(gl:polygon-mode :front-and-back :line))
Maybe something to do with no OpenGL context being available during compilation, but I don't see why that would be a problem since compiling the macro shouldn't actually make any OpenGL calls. Error occurs in SBCL but not CCL.
Anyway, I've got no further ideas and I'm not even sure if it's a problem for this library to fix. But I can take care of it by putting all OpenGL calls in their own functions and calling those functions from my key callback.
When I try to compile a
def-key-callback
form in SBCL with sly, it signals an error:I can evaluate the
def-key-callback
form, and the callback works correctly when I run the program. It's only compiling that signals the error.The error occurs under Linux (manjaro), SBCL v2.3.7, but doesn't occur when I compile under Windows.