This commit is contained in:
rchicoli 2021-07-13 22:53:32 +02:00 committed by GitHub
commit 606563e810
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 5 deletions

15
main.go
View File

@ -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(...)
// })