anchor.diff:    (display display))
   
   (defun find-display (name)
  -  (find name (list-displays) :key #'display-name :test #'string=))
  +  (if (not name)
  +      (display-get-default)
  +    (find name (list-displays) :key #'display-name :test #'string=)))
   
   (defun ensure-display (display)
     (etypecase display
       (null (display-get-default))
       (display display)
  -    (string 
  -     (or
  -      (find display (list-displays) :key #'display-name :test #'string=)
  -      (display-open display)))))
  +    (string (or (find-display display) (display-open display)))))
   
   
   ;;; Display manager
  
positive.code:     `(progn
         (threads-enter)
         (unwind-protect
  	   ,@body
  	 (threads-leave t)))))
  
negative.code: 
  ;;; Multi-threading support
  
  #+sb-thread
  (progn
    (defvar *global-lock* (sb-thread:make-mutex :name "global GDK lock"))
  
    (defun %global-lock-p ()
      (eq (car (sb-thread:mutex-value *global-lock*)) sb-thread:*current-thread*))
  
    (defun threads-enter ()
      (if (%global-lock-p)
  	(incf (cdr (sb-thread:mutex-value *global-lock*)))
        (sb-thread:get-mutex *global-lock* (cons sb-thread:*current-thread* 0))))
      
    (defun threads-leave (&optional flush-p)
      (assert (%global-lock-p))
      (cond
       ((zerop (cdr (sb-thread:mutex-value *global-lock*)))
        (when flush-p
  	(flush))
        (sb-thread:release-mutex *global-lock*))
       (t (decf (cdr (sb-thread:mutex-value *global-lock*))))))
  
    (define-callback %enter-fn nil ()
      (threads-enter))
  