diff --git a/main.go b/main.go index 356e0e87..0c7b75c0 100644 --- a/main.go +++ b/main.go @@ -3,8 +3,8 @@ package ui import ( - "runtime" "errors" + "runtime" "sync" "unsafe" ) @@ -42,6 +42,11 @@ func Main(f func()) error { return nil } +// Uninit calls C.uiUninit to uninitialize all allocated objects +func Uninit() { + C.uiUninit() +} + // Quit queues a return from Main. It does not exit the program. // It also does not immediately cause Main to return; Main will // return when it next can. Quit must be called from the GUI thread. @@ -52,9 +57,9 @@ func Quit() { // These prevent the passing of Go functions into C land. // TODO make an actual sparse list instead of this monotonic map thingy var ( - qmmap = make(map[uintptr]func()) + qmmap = make(map[uintptr]func()) qmcurrent = uintptr(0) - qmlock sync.Mutex + qmlock sync.Mutex ) // QueueMain queues f to be executed on the GUI thread when @@ -64,11 +69,11 @@ var ( // primary purpose is to allow communication between other // goroutines and the GUI thread. Calling QueueMain after Quit // has been called results in undefined behavior. -// +// // If you start a goroutine in f, it also cannot call package ui // functions. So for instance, the following will result in // undefined behavior: -// +// // ui.QueueMain(func() { // go ui.MsgBox(...) // })