anchor.diff:      (handle-message msg)))
   
   (defun get-and-handle-messages ()
  -  (loop as msg = (getmsg *main-thread-channel*)
  +  (loop as msg = (and *main-thread-channel*
  +                      (getmsg *main-thread-channel*))
           while msg do
             (handle-message msg)))
   
  
positive.code:     ;; If we did not have a main-thread channel, make a default main
      ;; thread.
      #-(and ccl darwin)
      (bt:make-thread #'sdl-main-thread :name "SDL2 Main Thread")
  
      ;; On OSX, we need to run in the main thread; CCL allows us to
      ;; safely do this.  On other platforms (mainly GLX?), we just need
      ;; to run in a dedicated thread.
      #+(and ccl darwin)
      (let ((thread (find 0 (ccl:all-processes) :key #'ccl:process-serial-number)))
        (ccl:process-interrupt thread #'sdl-main-thread)))
    (in-main-thread (:no-event t)
      ;; HACK! glutInit on OSX uses some magic undocumented API to
  
negative.code:            (error 'sdl-rc-error :rc ,wrapper :string (sdl-get-error))
             ,wrapper))))
  
  (defvar *the-main-thread* nil)
  (defvar *main-thread-channel* nil)
  (defvar *main-thread* nil)
  (defvar *lisp-message-event* nil)
  