Common lisp REPL关闭sdl2创建的窗口后无响应(使用cl-sdl2)

Common lisp REPL关闭sdl2创建的窗口后无响应(使用cl-sdl2),common-lisp,sdl-2,read-eval-print-loop,Common Lisp,Sdl 2,Read Eval Print Loop,我正在尝试使用创建一个窗口 我的代码有效-它创建一个窗口2秒钟,然后关闭它: (defun main () (sdl2:with-init (:everything) (sdl2:with-window (win :title "cl-sdl2 sample" :flags '(:shown :fullscreen)) (let ((surf (sdl2:get-window-surf

我正在尝试使用创建一个窗口

我的代码有效-它创建一个窗口2秒钟,然后关闭它:

(defun main ()
  (sdl2:with-init (:everything)
                  (sdl2:with-window (win :title "cl-sdl2 sample" :flags '(:shown :fullscreen))
                                    (let ((surf (sdl2:get-window-surface win)))
                                      (sdl2:fill-rect surf nil (sdl2:map-rgb (sdl2:surface-format surf) #xff #xff #xff))
                                      (sdl2:update-window win)
                                      (sdl2:delay 2000)))))

(main)
但是,在窗口关闭后,repl(CCL)被卡住。我无法再计算表达式这是为什么?如何返回正常工作的repl?

目前,每次运行样本对其进行测试时,我都必须不断生成新的CCL repl进程,这很快就会变得单调乏味


我在MacOS Sierra上。

这似乎是cl-sdl2的一个已知问题,如图所示:

当前建议的解决方法是将repl线程从主线程移出,并通过单独终端上的swank/slime连接到主线程,然后在主线程上运行sdl程序。下面是一个例子

(bt:make-thread (lambda () (swank:create-server :port 4005 :dont-close t)))
(sdl2:make-this-thread-main (lambda () (sdl2.kit:start)))