anchor.diff:                (event-gf event)
                 (cons window (loop repeat (event-arg-count event) collect t)))
           collect event))
  +
  +(defun enable-tick (window millis)
  +  (setf (tick-interval window) millis)
  +  (timer-func millis (callback tick-timer-cb) (id window)))
  +
  +(defun disable-tick (window)
  +  (setf (tick-interval window) nil))
   
   (defmethod display-window :around ((win base-window))
     (unless (slot-boundp win 'events)
  
positive.code:   (if (eq event-name :display)
        (warn "GLUT would be upset if we set the DISPLAY callback to NULL. ~
               So we won't do that.")
        (let ((event (find-event-or-lose event-name))) 
          ;; We don't actually disable the CLOSE event since we need it
          ;; for bookkeeping. See the CLOSE methods below.
          (unless (or (eq event-name :idle) (eq event-name :close))
  
negative.code:     (setq *id->window*
            (adjust-array *id->window* (1+ (id win)) :initial-element nil)))
    (setf (aref *id->window* (id win)) win)
    ;; setup tick timer
    (when (tick-interval win)
      (enable-tick win (tick-interval win)))
    (call-next-method))
  
  (defmethod display-window ((win base-window))
    (values))
  
  (defmethod enable-event ((window base-window) event-name)
    (let ((event (find-event-or-lose event-name)))
      (with-window window
        (register-callback event))
      (pushnew event (events window))
  