Update of /project/cells-gtk/cvsroot/root/cells-gtk
In directory common-lisp:/tmp/cvs-serv31088/root/cells-gtk
Modified Files:
widgets.lisp
Log Message:
Replaced hello-c:ff-defun-callable with cffi:defcallback.
Replaced some fgn-alloc fgn-free stuff with equivalent cffi.
--- /project/cells-gtk/cvsroot/root/cells-gtk/widgets.lisp 2006/01/03 19:03:02 1.15
+++ /project/cells-gtk/cvsroot/root/cells-gtk/widgets.lisp 2006/02/11 03:39:10 1.16
@@ -110,15 +110,15 @@
(intern (format nil "GTK-~a~{-~a~}" class slot-access) :gtk-ffi))))
;;; --- widget --------------------
-;;; Define handlers that recover the the callback defined on the widget
+;;; Define handlers that recover the callback defined on the widget
+
(defmacro def-gtk-event-handler (event)
- `(ff-defun-callable :cdecl :int ,(intern (string-upcase (format nil "~a-handler" event)))
- ((widget :pointer-void) (event :pointer-void) (data :pointer-void))
- ;(print (list :entered-gtk-event-handler-cb ,(symbol-name event) widget))
+ `(cffi:defcallback ,(intern (format nil "~a-HANDLER" event)) :int
+ ((widget :pointer) (event :pointer) (data :pointer))
(bif (self (gtk-object-find widget))
- (let ((cb (callback-recover self ,(intern (symbol-name event) :keyword))))
- (funcall cb self widget event data))
- (trc nil "unknown widget. from prior run. clean up on errors" widget))))
+ (let ((cb (callback-recover self ,(intern (string event) :keyword))))
+ (funcall cb self widget event data))
+ (trc nil "Unknown widget from prior run. Clean up on errors" widget))))
(def-gtk-event-handler clicked)
(def-gtk-event-handler changed)
@@ -131,15 +131,15 @@
(def-gtk-event-handler modified-changed)
(defparameter *widget-callbacks*
- (list (cons 'clicked (ff-register-callable 'clicked-handler))
- (cons 'changed (ff-register-callable 'changed-handler))
- (cons 'activate (ff-register-callable 'activate-handler))
- (cons 'value-changed (ff-register-callable 'value-changed-handler))
- (cons 'day-selected (ff-register-callable 'day-selected-handler))
- (cons 'selection-changed (ff-register-callable 'selection-changed-handler))
- (cons 'toggled (ff-register-callable 'toggled-handler))
- (cons 'delete-event (ff-register-callable 'delete-event-handler))
- (cons 'modified-changed (ff-register-callable 'modified-changed-handler))))
+ (list (cons 'clicked (cffi:get-callback 'clicked-handler))
+ (cons 'changed (cffi:get-callback 'changed-handler))
+ (cons 'activate (cffi:get-callback 'activate-handler))
+ (cons 'value-changed (cffi:get-callback 'value-changed-handler))
+ (cons 'day-selected (cffi:get-callback 'day-selected-handler))
+ (cons 'selection-changed (cffi:get-callback 'selection-changed-handler))
+ (cons 'toggled (cffi:get-callback 'toggled-handler))
+ (cons 'delete-event (cffi:get-callback 'delete-event-handler))
+ (cons 'modified-changed (cffi:get-callback 'modified-changed-handler))))
(eval-when (:compile-toplevel :load-toplevel :execute)
@@ -226,14 +226,11 @@
,@body
1))))
-(ff-defun-callable :cdecl :int timeout-handler-callback
- ((data (* :int)))
- ;;(print (list :timeout-handler-callback data))
- (let* ((id (elti data 0))
- (r2 (gtk-global-callback-funcall id)))
- (trc nil "timeout func really returning" r2)
- (if r2 1 0)))
-
+(cffi:defcallback timeout-handler-callback :int ((data :pointer))
+ (let* ((id (cffi:mem-aref data :int 0))
+ (r2 (gtk-global-callback-funcall id)))
+ (trc nil "timeout func really returning" r2)
+ (if r2 1 0)))
(defun timeout-add (milliseconds function)
(let ((id (gtk-global-callback-register
@@ -244,9 +241,9 @@
(trc nil "timeout func returning" r)
r))))
(c-id (fgn-alloc :int 1)))
- (setf (elti c-id 0) id)
- (trc nil "timeout-add > passing cb data, *data" c-id (elti c-id 0))
- (g-timeout-add milliseconds (ff-register-callable 'timeout-handler-callback) c-id)))
+ (setf (cffi:mem-aref c-id :int 0) (coerce id 'integer))
+ (trc nil "timeout-add > passing cb data, *data" c-id (cffi:mem-aref c-id :int 0))
+ (g-timeout-add milliseconds (cffi:get-callback 'timeout-handler-callback) c-id)))
(def-object widget ()
((tooltip :accessor tooltip :initarg :tooltip :initform (c-in nil))