diff options
Diffstat (limited to 'gtkcalls_unix.go')
| -rw-r--r-- | gtkcalls_unix.go | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/gtkcalls_unix.go b/gtkcalls_unix.go index 5a1a1ae..811287b 100644 --- a/gtkcalls_unix.go +++ b/gtkcalls_unix.go @@ -24,12 +24,14 @@ func gtk_init() bool { return fromgbool(C.gtk_init_check((*C.int)(nil), (***C.char)(nil))) } -// the garbage collector has been found to eat my callback functions; this will stop it -var callbackstore = make([]*func() bool, 0, 50) +// see our_idle_callback in callbacks_unix.go for details +type gtkIdleOp struct { + what func() + done chan struct{} +} -func gdk_threads_add_idle(what func() bool) { - callbackstore = append(callbackstore, &what) - C.gdk_threads_add_idle(callbacks["idle"], C.gpointer(unsafe.Pointer(&what))) +func gdk_threads_add_idle(idleop *gtkIdleOp) { + C.gdk_threads_add_idle(callbacks["idle"], C.gpointer(unsafe.Pointer(idleop))) } func gtk_main() { @@ -45,6 +47,9 @@ func gtk_window_new() *gtkWidget { return fromgtkwidget(C.gtk_window_new(0)) } +// the garbage collector has been found to eat my callback functions; this will stop it +var callbackstore = make([]*func() bool, 0, 50) + func g_signal_connect(obj *gtkWidget, sig string, callback func() bool) { callbackstore = append(callbackstore, &callback) ccallback := callbacks[sig] |
