[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