diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2019-02-06 20:37:38 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2019-02-06 20:37:38 -0800 |
commit | f4f39e9d7471df807d8a8e9a8ee12f56e30e10d6 (patch) | |
tree | 5e6aa05b8c0e7390c353f3be79d8d86ad4aed278 | |
parent | db530b65a828d94e2affaa65b01366b81a541f29 (diff) | |
download | gtk-demos-f4f39e9d7471df807d8a8e9a8ee12f56e30e10d6.tar.gz gtk-demos-f4f39e9d7471df807d8a8e9a8ee12f56e30e10d6.tar.bz2 gtk-demos-f4f39e9d7471df807d8a8e9a8ee12f56e30e10d6.zip |
Store closures in globals, to protect from GC.
-rw-r--r-- | gtkffi.tl | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -76,10 +76,9 @@ (let ((cb (callbackname abutton))) ^(progn (defparm ,abutton nil) - (defun ,cb (a b) - ,*body) + (defparm ,cb [button-cb (lambda (a b) ,*body)]) (set ,abutton (gtk_button_new_with_label ,buttonlabel)) - (g_signal_connect_data ,abutton "clicked" [button-cb ,cb] + (g_signal_connect_data ,abutton "clicked" ,cb null null 0) (gtk_container_add ,placement ,abutton)))) @@ -116,7 +115,6 @@ (let ((cb (callbackname theapp))) ^(progn (defparm ,theapp nil) - (defun ,cb (a b) - ,*body) + (defparm ,cb [app-cb (lambda (a b) ,*body)]) (set ,theapp (gtk_application_new nil 0)) - (g_signal_connect_data ,theapp "activate" [app-cb ,cb] null null 0)))) + (g_signal_connect_data ,theapp "activate" ,cb null null 0)))) |