chiark / gitweb /
Modified to not use custom C functions to create GClosures
authorespen <espen>
Wed, 30 Aug 2006 09:52:10 +0000 (09:52 +0000)
committerespen <espen>
Wed, 30 Aug 2006 09:52:10 +0000 (09:52 +0000)
glib/gcallback.lisp

index 2ee583f93c8caca4ccc6d4b8f3a8e2a53def0b3c..10f5aab4d89e3411432289adddd177a475fed9d5 100644 (file)
@@ -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