diff --git a/code/serve-event.lisp b/code/serve-event.lisp index ee453df6ff141842e34e9fad7596098405cc5c5c..c6ac2df640ec3aad4b186c213016683f06c04899 100644 --- a/code/serve-event.lisp +++ b/code/serve-event.lisp @@ -18,6 +18,10 @@ (export '(with-fd-handler add-fd-handler remove-fd-handler invalidate-descriptor serve-event serve-all-events wait-until-fd-usable)) +(in-package "EXTENSIONS") + +(export '(*display-event-handlers*)) + (in-package "LISP") @@ -243,6 +247,12 @@ ;;;; Serve-all-events, serve-event, and friends. +(defvar *display-event-handlers* nil + "This is an alist mapping displays to user functions to be called when + SYSTEM:SERVE-EVENT notices input on a display connection. Do not modify + this directly; use EXT:ENABLE-CLX-EVENT-HANDLING. A given display + should be represented here only once.") + ;;; SERVE-ALL-EVENTS -- public ;;; ;;; Wait for up to timeout seconds for an event to happen. Make sure all @@ -258,6 +268,7 @@ ((null sval) res) (setq res t))) + ;;; SERVE-EVENT -- public ;;; ;;; Serve a single event. @@ -268,7 +279,7 @@ seconds) and then return, otherwise it will wait until something happens. Server returns T if something happened and NIL otherwise." ;; First, check any X displays for any pending events. - (dolist (d/h ext::*display-event-handlers*) + (dolist (d/h *display-event-handlers*) (let ((d (car d/h))) (when (xlib::event-listen d) (handler-bind ((error #'(lambda (condx)