From 98b24bc00bf9f94d20a776253ee5086f2ae5b00c Mon Sep 17 00:00:00 2001 From: Ox Cart Date: Sun, 27 Aug 2017 11:58:01 -0500 Subject: [PATCH] Running onReady in separate goroutine --- systray.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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() {} }