The Do function is now thread safe
This commit is contained in:
parent
1cb3be8de8
commit
9f4e8a539a
12
tomo.go
12
tomo.go
@ -1,8 +1,10 @@
|
||||
package tomo
|
||||
|
||||
import "sync"
|
||||
import "image"
|
||||
import "errors"
|
||||
|
||||
var backendLock sync.Mutex
|
||||
var backend Backend
|
||||
|
||||
// Run initializes a backend, runs the specified callback function, and runs the
|
||||
@ -17,7 +19,10 @@ func Run (callback func ()) error {
|
||||
|
||||
back, err := Initialize()
|
||||
if err != nil { return err }
|
||||
|
||||
backendLock.Lock()
|
||||
backend = back
|
||||
backendLock.Unlock()
|
||||
|
||||
callback()
|
||||
return backend.Run()
|
||||
@ -32,11 +37,16 @@ func assertBackend () {
|
||||
func Stop () {
|
||||
assertBackend()
|
||||
backend.Stop()
|
||||
|
||||
backendLock.Lock()
|
||||
backend = nil
|
||||
backendLock.Unlock()
|
||||
}
|
||||
|
||||
func Do (callback func ()) {
|
||||
backend.Do(callback)
|
||||
backendLock.Lock()
|
||||
if backend != nil { backend.Do(callback) }
|
||||
backendLock.Unlock()
|
||||
}
|
||||
|
||||
func NewWindow (bounds image.Rectangle) (MainWindow, error) {
|
||||
|
Loading…
Reference in New Issue
Block a user