[mcclim-cvs] CVS mcclim/Backends/CLX

tmoore tmoore at common-lisp.net
Thu Mar 23 08:45:26 UTC 2006


Update of /project/mcclim/cvsroot/mcclim/Backends/CLX
In directory clnet:/tmp/cvs-serv25483

Modified Files:
	image.lisp port.lisp 
Log Message:
Fix (temporary hack) to use file sockets in CLX on ACL

--- /project/mcclim/cvsroot/mcclim/Backends/CLX/image.lisp	2005/02/21 13:32:49	1.20
+++ /project/mcclim/cvsroot/mcclim/Backends/CLX/image.lisp	2006/03/23 08:45:26	1.21
@@ -18,7 +18,7 @@
 ;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
 ;;; Boston, MA  02111-1307  USA.
 
-(defpackage "IMAGE"
+(defpackage :image
 ; (:use #:clim-lisp)
   (:use :clim-clx :common-lisp)
   (:export
--- /project/mcclim/cvsroot/mcclim/Backends/CLX/port.lisp	2006/03/15 22:56:55	1.121
+++ /project/mcclim/cvsroot/mcclim/Backends/CLX/port.lisp	2006/03/23 08:45:26	1.122
@@ -1412,3 +1412,24 @@
                   Sending property NIL to target.~%" target)
 	 (send-event :target target :property nil))))
     (xlib:display-force-output (xlib:window-display requestor))))
+
+;;; XXX CLX in ACL doesn't use local sockets, so here's a fix. This is gross
+;;; and should obviously be included in Franz' clx and portable clx, but I
+;;; believe that enough users will find that their X servers don't listen for
+;;; TCP connections that it is worthwhile to include this code here
+;;; temporarily.
+
+#+allegro
+(defun xlib::open-x-stream (host display protocol)
+  (declare (ignore protocol)) ;; Derive from host
+  (let ((stream (if (or (string= host "") (string= host "unix"))
+		    (socket:make-socket
+		     :address-family :file
+		     :remote-filename (format nil "/tmp/.X11-unix/X~D" display)
+		     :format :binary)
+		    (socket:make-socket :remote-host (string host)
+					:remote-port (+ *x-tcp-port* display)
+					:format :binary))))
+    (if (streamp stream)
+	stream
+      (error "Cannot connect to server: ~A:~D" host display))))




More information about the Mcclim-cvs mailing list