PageRenderTime 53ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/error.lisp

https://github.com/xlchen/gollum
Lisp | 53 lines | 20 code | 9 blank | 24 comment | 0 complexity | 98fa03448cd02d09dd2ad2b271f50210 MD5 | raw file
  1. (in-package :gollum)
  2. ;; clx error handling
  3. ;; *xerror-vector*
  4. ;; unknown-error
  5. ;; request-error ; 1 bad request code
  6. ;; value-error ; 2 integer parameter out of range
  7. ;; window-error ; 3 parameter not a Window
  8. ;; pixmap-error ; 4 parameter not a Pixmap
  9. ;; atom-error ; 5 parameter not an Atom
  10. ;; cursor-error ; 6 parameter not a Cursor
  11. ;; font-error ; 7 parameter not a Font
  12. ;; match-error ; 8 parameter mismatch
  13. ;; drawable-error ; 9 parameter not a Pixmap or Window
  14. ;; access-error ; 10 attempt to access private resource
  15. ;; alloc-error ; 11 insufficient resources
  16. ;; colormap-error ; 12 no such colormap
  17. ;; gcontext-error ; 13 parameter not a GContext
  18. ;; id-choice-error ; 14 invalid resource ID for this connection
  19. ;; name-error ; 15 font or color name does not exist
  20. ;; length-error ; 16 request length incorrect;
  21. ;; ; internal Xlib error
  22. ;; implementation-error ; 17 server is defective
  23. (defparameter *error-handlers* (make-array 24 :initial-element #'xlib:default-error-handler))
  24. (defmacro define-error-handler (error-key actual-keys &body body)
  25. (let ((fn-name (gensym)))
  26. `(labels ((,fn-name (display error-key &rest key-vals &key asynchronous ,@actual-keys &allow-other-keys)
  27. ,@body))
  28. (setf (elt *error-handlers* (position ,error-key xlib::*xerror-vector*)) #',fn-name))))
  29. ;; errors in clx:
  30. ;; access-error alloc-error atom-error closed-display colormap-error connection-failure cursor-error device-busy drawable-error font-error gcontext-error id-choice-error implementation-error length-error lookup-error match-error missing-parameter name-error pixmap-error reply-length-error reply-timeout request-error resource-error sequence-error server-disconnect unexpected-reply unknown-error value-error window-error
  31. (define-error-handler 'xlib:window-error (resource-id)
  32. (dformat 1 "window-error received")
  33. (if asynchronous
  34. t
  35. (apply #'error 'xlib:window-error :display display :error-key 'xlib:window-error key-vals)))
  36. (define-error-handler 'xlib:drawable-error ()
  37. (dformat 1 "drawable-error received")
  38. (if asynchronous
  39. t
  40. (apply #'error 'xlib:drawable-error :display display :error-key 'xlib:drawable-error key-vals)))
  41. ;; gollum error handling
  42. (define-condition no-such-window (error)
  43. ((xwindow :initarg :xwindow
  44. :reader xwindow)))