nasin/manager.go

34 lines
615 B
Go
Raw Normal View History

package nasin
import "git.tebibyte.media/tomo/tomo"
import "git.tebibyte.media/tomo/tomo/event"
var manager struct {
count int
}
type funcCookie func ()
func (cookie funcCookie) Close () {
cookie()
}
// WaitFor ensures that the application will stay running while the given window
// is open.
func WaitFor (window tomo.Window) event.Cookie {
manager.count ++
isManaged := true
handleClose := func () {
if !isManaged { return }
isManaged = false
manager.count --
if manager.count < 1 {
tomo.Stop()
}
}
return event.MultiCookie (
window.OnClose(handleClose),
funcCookie(handleClose))
}