From f68166e85883fbeb61dde72e74e18a9317ef449b Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 3 Mar 2019 14:20:25 +1100 Subject: bump gocui to stop polling events after closing the gui when switching to a subprocess --- vendor/github.com/jesseduffield/gocui/gui.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'vendor') diff --git a/vendor/github.com/jesseduffield/gocui/gui.go b/vendor/github.com/jesseduffield/gocui/gui.go index 41599a9be..1dcb237b7 100644 --- a/vendor/github.com/jesseduffield/gocui/gui.go +++ b/vendor/github.com/jesseduffield/gocui/gui.go @@ -49,6 +49,7 @@ type Gui struct { keybindings []*keybinding maxX, maxY int outputMode OutputMode + stop chan struct{} // BgColor and FgColor allow to configure the background and foreground // colors of the GUI. @@ -92,6 +93,8 @@ func NewGui(mode OutputMode, supportOverlaps bool) (*Gui, error) { g.outputMode = mode termbox.SetOutputMode(termbox.OutputMode(mode)) + g.stop = make(chan struct{}, 0) + g.tbEvents = make(chan termbox.Event, 20) g.userEvents = make(chan userEvent, 20) @@ -110,6 +113,9 @@ func NewGui(mode OutputMode, supportOverlaps bool) (*Gui, error) { // Close finalizes the library. It should be called after a successful // initialization and when gocui is not needed anymore. func (g *Gui) Close() { + go func() { + g.stop <- struct{}{} + }() termbox.Close() } @@ -371,9 +377,15 @@ func (g *Gui) MainLoop() error { if err := g.flush(); err != nil { return err } + go func() { for { - g.tbEvents <- termbox.PollEvent() + select { + case <-g.stop: + return + default: + g.tbEvents <- termbox.PollEvent() + } } }() -- cgit v1.2.3