From: espen Date: Wed, 30 Aug 2006 09:52:10 +0000 (+0000) Subject: Modified to not use custom C functions to create GClosures X-Git-Tag: clg-0-93~272 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/commitdiff_plain/9c7196d0953d013dc53e4140fbcbb9ff14003a90 Modified to not use custom C functions to create GClosures --- diff --git a/glib/gcallback.lisp b/glib/gcallback.lisp index ae1d1f1..5dd08ee 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.36 2006/07/14 10:51:07 espen Exp $ +;; $Id: gcallback.lisp,v 1.37 2006/08/30 09:52:10 espen Exp $ (in-package "GLIB") @@ -360,11 +360,21 @@ (defbinding signal-handler-is-connected-p () boolean (instance ginstance) (handler-id unsigned-long)) -(defbinding (callback-closure-new "clg_callback_closure_new") () gclosure +(defbinding (closure-new "g_cclosure_new") () gclosure + ((make-pointer #xFFFFFFFF) pointer) (callback-id unsigned-int) - (callback callback) (destroy-notify callback)) +(defbinding closure-set-meta-marshal () nil + (gclosure gclosure) + (callback-id unsigned-int) + (callback callback)) + +(defun callback-closure-new (callback-id callback destroy-notify) + (let ((gclosure (closure-new callback-id destroy-notify))) + (closure-set-meta-marshal gclosure callback-id callback) + gclosure)) + (defun make-callback-closure (function marshaller) (let ((callback-id (register-callback-function function))) (values