[mcclim-cvs] CVS mcclim/Lisp-Dep

ahefner ahefner at common-lisp.net
Sat Jul 8 16:58:36 UTC 2006


Update of /project/mcclim/cvsroot/mcclim/Lisp-Dep
In directory clnet:/tmp/cvs-serv26500/Lisp-Dep

Modified Files:
	mp-nil.lisp 
Log Message:
Fix event compression on single-process lisps. This consists of two
changes: 1) Don't use immediate-sheet-input-mixin, and 2) When reading
events from the backend, read all available events in a nonblocking
fashion, so that events which have accumulated since we last checked
can be compressed.

This requires the backend 'get-next-event' to support :timeout 0. 
Currently CLX and Beagle appear to do so, while Gtkairo does not.



--- /project/mcclim/cvsroot/mcclim/Lisp-Dep/mp-nil.lisp	2004/05/12 12:46:49	1.6
+++ /project/mcclim/cvsroot/mcclim/Lisp-Dep/mp-nil.lisp	2006/07/08 16:58:36	1.7
@@ -125,7 +125,10 @@
   (declare (ignore lock))
   (flet ((wait-func ()
 	   (loop for port in climi::*all-ports*	;; this is dubious
-	      do (process-next-event port))
+                 do (loop as this-event = (process-next-event port :timeout 0)
+                     for got-events = this-event then (or got-events this-event)
+                     while this-event
+                     finally (unless got-events (process-next-event port))))
 	   (car cv)))
     (setf (car cv) nil)
     (if timeout




More information about the Mcclim-cvs mailing list