aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--systray.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/systray.go b/systray.go
index 7eb17b4..5ee6609 100644
--- a/systray.go
+++ b/systray.go
@@ -53,8 +53,22 @@ func Run(onReady func(), onExit func()) {
if onReady == nil {
onReady = func() {}
+ } else {
+ // Run onReady on separate goroutine to avoid blocking event loop
+ origOnReady := onReady
+ readyCh := make(chan interface{})
+ go func() {
+ <-readyCh
+ origOnReady()
+ }()
+ onReady = func() {
+ close(readyCh)
+ }
}
systrayReady = onReady
+
+ // unlike onReady, onExit runs in the event loop to make sure it has time to
+ // finish before the process terminates
if onExit == nil {
onExit = func() {}
}