X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=glib%2Fgobject.signals.lisp;fp=glib%2Fgobject.signals.lisp;h=4efa669a29c9755113640bc67ff184d55ff55243;hb=db0d829452f27bbef68da2afd755b7accc5be5be;hp=99fe636186a19c9f43d2a9014d39bfb606340b1a;hpb=6ee86a7254b0a8c1aa6e39795593a40966e4a3d9;p=cl-gtk2.git diff --git a/glib/gobject.signals.lisp b/glib/gobject.signals.lisp index 99fe636..4efa669 100644 --- a/glib/gobject.signals.lisp +++ b/glib/gobject.signals.lisp @@ -1,8 +1,5 @@ (in-package :gobject) -(defun unmangle-type (type) - (logxor type (ldb (byte 1 0) type)));;subtract the G_SIGNAL_TYPE_STATIC_SCOPE - (defun emit-signal (object signal-name &rest args) "Emits the signal. @arg[object]{an instance of @class{g-object}. Signal is emitted on this object} @@ -18,7 +15,7 @@ (set-g-value (mem-aref params 'g-value 0) object (g-type-from-object (pointer object)) :zero-g-value t) (iter (for i from 0 below (foreign-slot-value q 'g-signal-query :n-params)) (for arg in args) - (for type = (unmangle-type (mem-aref (foreign-slot-value q 'g-signal-query :param-types) 'g-type i))) + (for type = (mem-aref (foreign-slot-value q 'g-signal-query :param-types) '(g-type-designator :mangled-p t) i)) (set-g-value (mem-aref params 'g-value (1+ i)) arg type :zero-g-value t)) (prog1 (if (= (foreign-slot-value q 'g-signal-query :return-type) +g-type-void+)