anchor.diff:  (defvar *lisp-message-event* nil)
   (defvar *wakeup-event* (alloc 'sdl2-ffi:sdl-event))
   
  -(defmacro in-main-thread ((&key background) &body b)
  +(defmacro in-main-thread ((&key background no-event) &body b)
     (with-gensyms (fun channel)
       `(let ((,fun (lambda () ,@b)))
          (if *main-thread-channel*
  
positive.code:                     `(let ((,channel (make-channel)))
                         (sendmsg *main-thread-channel*
                                  (cons ,fun ,channel))
                         (push-event *wakeup-event*)
                         (let ((result (recvmsg ,channel)))
                           (etypecase result
                             (list (values-list result))
  
negative.code: 
  (defun init (&rest sdl-init-flags)
    "Initialize SDL2 with the specified subsystems. Initializes everything by default."
    (unless *main-thread-channel*
      (setf *main-thread-channel* (make-channel))
      #-(and ccl darwin)
      (bt:make-thread #'sdl-main-thread))
    (unless *lisp-message-event*
      (setf *lisp-message-event* (sdl-register-events 1))
      (setf (c-ref *wakeup-event* sdl2-ffi:sdl-event :type) *lisp-message-event*))
  