Common lisp 我可以使用用户定义的事件退出cl-sdl2:with event loop()吗?

Common lisp 我可以使用用户定义的事件退出cl-sdl2:with event loop()吗?,common-lisp,sdl-2,Common Lisp,Sdl 2,我需要向sdl应用程序的几个实例之一发送退出信号。如果我这样做(sdl2:push-event:quit)或(sdl2:push-quit-event),它将转到任何/所有应用程序,我只需要它转到一个 因此,我尝试注册一个以整数作为数据的用户定义事件,但无法让它退出事件循环,如:quit does。可能吗 这里有一个小测试程序,显示我正在尝试做什么。执行(sdl2:push-event:quit)两次将终止程序,但尝试使用:my-quit只打印数据值,而不退出循环 (eval-when (:co

我需要向sdl应用程序的几个实例之一发送退出信号。如果我这样做(sdl2:push-event:quit)或(sdl2:push-quit-event),它将转到任何/所有应用程序,我只需要它转到一个

因此,我尝试注册一个以整数作为数据的用户定义事件,但无法让它退出事件循环,如:quit does。可能吗

这里有一个小测试程序,显示我正在尝试做什么。执行(sdl2:push-event:quit)两次将终止程序,但尝试使用:my-quit只打印数据值,而不退出循环

(eval-when (:compile-toplevel :load-toplevel :execute)
  (ql:quickload :bordeaux-threads)
  (ql:quickload :sdl2))

(defparameter *display* 0)

(defun sdl1 ()
  (sdl2:with-init (:video)
    (sdl2:hide-cursor)
    (sdl2:with-window (win
                       :x (sdl2:windowpos-centered *display*)
                       :y (sdl2:windowpos-centered *display*)
                       :flags '())
      (sdl2:with-renderer (ren win)
        (dotimes (n 2)
          (sdl2:with-event-loop (:method :poll)
            (:idle ()
                   (sdl2:set-render-draw-color ren (* n 50) (* n 50) (* n 50) 255)
                   (sdl2:render-clear ren)
                   (sdl2:render-present ren)
                   (sleep 2))
            (:my-quit (:user-data data)
                         (pprint data)
                         t)
            (:quit () t)))))))

(defun sdltest (d)
  (setf *display* d)
  (sdl2:register-user-event-type :my-quit)
  (bt:make-thread (lambda () (sdl2:make-this-thread-main #'sdl1)))
  (sleep 1)
  (sdl2:push-user-event :my-quit 0))

我更希望避免将sdl2:与事件循环一起使用,但sdl2:隐藏游标不起作用。