[mcclim-cvs] CVS mcclim/Backends/gtkairo

dlichteblau dlichteblau at common-lisp.net
Sun Dec 10 19:33:05 UTC 2006


Update of /project/mcclim/cvsroot/mcclim/Backends/gtkairo
In directory clnet:/tmp/cvs-serv24530

Modified Files:
	event.lisp frame-manager.lisp gtk-ffi.lisp 
Log Message:

Fix CMUCL support.

	* event.lisp (get-next-event): Yield.
	
	* frame-manager.lisp ((defgeneric make-pane-2)): New.

	* gtk-ffi.lisp (invoke-with-gtk): Inhibit scheduling.

	* mcclim.asd: Don't (require :clx) when :gtkairo is set.


--- /project/mcclim/cvsroot/mcclim/Backends/gtkairo/event.lisp	2006/12/10 16:34:32	1.16
+++ /project/mcclim/cvsroot/mcclim/Backends/gtkairo/event.lisp	2006/12/10 19:33:05	1.17
@@ -115,6 +115,7 @@
     (t
       #+clim-gtkairo::do-not-block-in-ffi
       (sb-sys:wait-until-fd-usable (gdk-xlib-fd) :input 0.1)
+      #+cmu (mp:process-yield)
       (gtk-main-iteration port #-clim-gtkairo::do-not-block-in-ffi t)
       (dequeue port))))
 
--- /project/mcclim/cvsroot/mcclim/Backends/gtkairo/frame-manager.lisp	2006/11/19 18:08:16	1.9
+++ /project/mcclim/cvsroot/mcclim/Backends/gtkairo/frame-manager.lisp	2006/12/10 19:33:05	1.10
@@ -44,6 +44,9 @@
 	 :port (port frame)
 	 initargs))
 
+;; make CMUCL happy
+(defgeneric make-pane-2 (type &rest args &key &allow-other-keys))
+
 (defmethod make-pane-2 (type &rest initargs)
   (apply #'make-instance type initargs))
 
--- /project/mcclim/cvsroot/mcclim/Backends/gtkairo/gtk-ffi.lisp	2006/12/10 16:34:32	1.18
+++ /project/mcclim/cvsroot/mcclim/Backends/gtkairo/gtk-ffi.lisp	2006/12/10 19:33:05	1.19
@@ -131,17 +131,18 @@
 ;; functions to lock and unlock a recursive lock for that, which the
 ;; portability files currently don't provide.
 (defun invoke-with-gtk (fn)
-  (with-cairo-floats ()
-    (unless *have-lock*
-      (gdk_threads_enter))
-    (unwind-protect
-	(let ((*have-lock* t))
-	  (funcall fn))
+  (#-cmu progn #+cmu mp:without-scheduling
+    (with-cairo-floats ()
       (unless *have-lock*
-	;; fixme: gdk documentation recommends flushing before releasing
-	;; the lock.  But doing so makes everything s.l.o.w.
+	(gdk_threads_enter))
+      (unwind-protect
+	  (let ((*have-lock* t))
+	    (funcall fn))
+	(unless *have-lock*
+	  ;; fixme: gdk documentation recommends flushing before releasing
+	  ;; the lock.  But doing so makes everything s.l.o.w.
 ;;;	(gdk_flush)
-	(gdk_threads_leave)))))
+	  (gdk_threads_leave))))))
 
 
 ;;; GROVELME




More information about the Mcclim-cvs mailing list