;; 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.38 2006/09/12 14:00:59 espen Exp $
(in-package "GLIB")
(tag unsigned-int))
(define-callback source-callback-marshal nil ((callback-id unsigned-int))
- (callback-trampoline callback-id 0 nil))
+ (callback-trampoline #'invoke-callback callback-id 0 nil))
(defbinding (timeout-add "g_timeout_add_full")
(interval function &optional (priority +priority-default+)) unsigned-int
(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