From 290f233287097391c1f59f900e607893a578a7a8 Mon Sep 17 00:00:00 2001 From: ram <ram> Date: Wed, 22 May 1991 17:47:15 +0000 Subject: [PATCH] Changed SERVE-EVENT to not try to serve X events when the FD is in the FD handlers list. This prevents recursive entry into reading off of a display when BUFFER-INPUT-WAIT-DEFAULT calls WAIT-UNTIL-FD-USABLE. --- code/serve-event.lisp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/code/serve-event.lisp b/code/serve-event.lisp index 3b99df00d..c188f45af 100644 --- a/code/serve-event.lisp +++ b/code/serve-event.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/serve-event.lisp,v 1.8 1991/05/22 00:19:39 ram Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/serve-event.lisp,v 1.9 1991/05/22 17:47:15 ram Exp $") ;;; ;;; ********************************************************************** ;;; @@ -269,7 +269,14 @@ #+clx (dolist (d/h *display-event-handlers*) (let ((d (car d/h))) - (when (xlib::event-listen d) + (declare (inline member)) + ;; + ;; If in the *descriptor-handlers*, then we are already waiting for input + ;; on that display, and we don't want to do it recursively. + (when (and (not (member (fd-stream-fd (xlib::display-input-stream d)) + *descriptor-handlers* + :key #'handler-descriptor)) + (xlib::event-listen d)) (handler-bind ((error #'(lambda (condx) (declare (ignore condx)) (flush-display-events d)))) -- GitLab