X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/56ccd5b731e30f2d195cefc4cbf0b8640fac2c92..e339200bb4ce98efe8b1d052504e7d781087ede3:/glib/gcallback.lisp diff --git a/glib/gcallback.lisp b/glib/gcallback.lisp index 0598e44..9330820 100644 --- a/glib/gcallback.lisp +++ b/glib/gcallback.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gcallback.lisp,v 1.30 2006-02-19 19:31:14 espen Exp $ +;; $Id: gcallback.lisp,v 1.33 2006-03-02 21:13:01 espen Exp $ (in-package "GLIB") @@ -29,6 +29,9 @@ ;;;; Callback invokation +(deftype gclosure () 'pointer) +(register-type 'gclosure '|g_closure_get_type|) + (defun register-callback-function (function) (check-type function (or null symbol function)) (register-user-data function)) @@ -45,6 +48,7 @@ (define-callback signal-emission-hook nil ((invocation-hint pointer) (n-params unsigned-int) (param-values pointer) (callback-id unsigned-int)) + (declare (ignore invocation-hint)) (callback-trampoline callback-id n-params param-values)) (defun callback-trampoline (callback-id n-params param-values &optional @@ -317,9 +321,6 @@ (instance ginstance) (handler-id unsigned-int)) -(deftype gclosure () 'pointer) -(register-type 'gclosure '|g_closure_get_type|) - (defbinding (callback-closure-new "clg_callback_closure_new") () gclosure (callback-id unsigned-int) (callback callback) @@ -469,7 +470,7 @@ once." (:first `((callback-id unsigned-int) ,@(mapcar #'list names types))) (:last `(,@(mapcar #'list names types) (callback-id unsigned-int)))) (declare (ignore ,@ignore)) - (invoke-callback callback-id ',return-type ,@params)))) + (invoke-callback callback-id ',return-type ,@(nreverse params))))) (defmacro with-callback-function ((id function) &body body) `(let ((,id (register-callback-function ,function)))