[Eclipse-cvs] CVS eclipse/lib/clx-ext

ihatchondo ihatchondo at common-lisp.net
Tue Nov 17 17:29:13 UTC 2009


Update of /project/eclipse/cvsroot/eclipse/lib/clx-ext
In directory cl-net:/tmp/cvs-serv20028/lib/clx-ext

Modified Files:
	clx-patch.lisp 
Log Message:
Fix: <mumble>-equal now accept null arguments.

--- /project/eclipse/cvsroot/eclipse/lib/clx-ext/clx-patch.lisp	2004/03/03 09:05:12	1.6
+++ /project/eclipse/cvsroot/eclipse/lib/clx-ext/clx-patch.lisp	2009/11/17 17:29:13	1.7
@@ -1,5 +1,5 @@
 ;;; -*- Mode: Lisp -*-
-;;; $Id: clx-patch.lisp,v 1.6 2004/03/03 09:05:12 ihatchondo Exp $
+;;; $Id: clx-patch.lisp,v 1.7 2009/11/17 17:29:13 ihatchondo Exp $
 ;;;
 ;;; This file contains the patch fixing a bug in CLX as distributed
 ;;; with vanilla CMUCL versions up to 18d.
@@ -51,6 +51,33 @@
 	  (t (xlib::lookup-window dpy id))))
       (xlib::member8-get 1 :none :pointer-root :parent))))
 
+;; This is a patch for the equality functions. Not accepting at least
+;; nil arguments is pretty anoying. It will still complain if at least
+;; one is not of the proper type but this should save us from lots of 
+;; testing.
+
+(macrolet ((make-mumble-equal (type)
+	     ;; Since caching is only done for objects created by the
+	     ;; client, we must always compare ID and display for
+	     ;; non-identical mumbles.
+	     (let ((predicate (xintern type '-equal))
+		   (id (xintern type '-id))
+		   (dpy (xintern type '-display)))
+		`(within-definition (,type make-mumble-equal)
+		   (defun ,predicate (a b)
+		     (declare (type (or null ,type) a b))
+                     (when (and a b)
+                       (or (eql a b)
+                           (and (= (,id a) (,id b))
+                                (eq (,dpy a) (,dpy b))))))))))
+  (make-mumble-equal window)
+  (make-mumble-equal pixmap)
+  (make-mumble-equal cursor)
+  (make-mumble-equal font)
+  (make-mumble-equal gcontext)
+  (make-mumble-equal colormap)
+  (make-mumble-equal drawable))
+
 ;; It seems that sometimes some id are still present in the clx display
 ;; internal cache even when those resources have been destroyed. This has
 ;; for effect that when the X server reallocate this id to a resource of





More information about the Eclipse-cvs mailing list