anchor.diff:    
     (defparameter surface-implementation
       (implement-wl-surface
  -     :commit (callback my-commit)
  -     :attach (callback my-attach)
  -     :frame (callback my-frame)
  -     :set-input-region (callback my-set-input-region)
  +     :commit (callback commit)
  +     :attach (callback attach)
  +     :frame (callback frame)
  +     :set-input-region (callback set-input-region)
        :set-opaque-region (callback set-opaque-region)))
     
     (defcallback delete-surface :void
  
positive.code: (defun initialise-wayland ()
    ;; Define callbacks at run time otherwise save-lisp-and-die executable
    ;; doesn't work
    (defcallback my-commit :void
      ((client-ptr :pointer) (resource :pointer))
      (let* ((client (find-client client-ptr *compositor*))
  	   (->surface (wl-resource-get-user-data resource))
  
negative.code:     (format t "Surface requested move~%")
      (let* ((surface-ptr (wl-resource-get-user-data resource))
  	   (surface (find-surface surface-ptr *compositor*)))
        (setf (moving-surface *compositor*) (make-move-op :surface surface
  							:surface-x (x surface)
  							:surface-y (y surface)
  							:pointer-x (pointer-x *compositor*)
  							:pointer-y (pointer-y *compositor*)))))
  
  ;;  (defcallback resize :void
    ;;  )    
  