anchor.diff:          (t x)))
   
   (defvar *compositor* nil "Compositor thread.")
  -(defvar *compositor-heartbeat* nil "Compositor heartbeat thread. Drives redisplay.")
   (defvar *compositor-debug-enable* nil)
   
  -(defvar *event-queue* (mezzano.supervisor:make-fifo 50)
  +(defvar *event-queue* (mezzano.sync:make-mailbox :name 'compositor-event-queue)
     "Internal FIFO used to submit events to the compositor.")
   
   (defun submit-compositor-event (event)
  -  (mezzano.supervisor:fifo-push event *event-queue*))
  +  (mezzano.sync:mailbox-send event *event-queue*))
   
   (defclass window ()
     ((%x :initarg :x :accessor window-x)
  
positive.code: 
  (defvar *redisplay-pending* nil)
  
  (defclass redisplay-time-event (event)
    ((%fullp :initarg :full :reader redisplay-time-event-fullp))
    (:default-initargs :full nil))
  
  (defmethod process-event ((event redisplay-time-event))
    (when (not (eql *redisplay-pending* :full))
      (setf *redisplay-pending* (if (redisplay-time-event-fullp event) :full t))))
  
  (defun force-redisplay (&optional full)
    (submit-compositor-event (make-instance 'redisplay-time-event :full full)))
  
  ;;;; Notifications.
  
  
negative.code:           *screen-backbuffer* (mezzano.gui:make-surface
                                 (mezzano.supervisor:framebuffer-width *main-screen*)
                                 (mezzano.supervisor:framebuffer-height *main-screen*)))
      (setf *redisplay-pending* :full)
      (broadcast-notification :screen-geometry
                              (make-instance 'screen-geometry-update
                                             :width (mezzano.supervisor:framebuffer-width *main-screen*)
  