From b8fbbf5c83862cc47fac7edc2c26a6d79a9c9df0 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 28 Jun 2020 16:34:01 -0400 Subject: [PATCH] Only lock event handling --- cmd/micro/micro.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 83b09daa..a4d22b70 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -345,9 +345,7 @@ func main() { // okay to be inefficient and run it via a function every time // We do this so we can recover from panics without crashing the editor for { - ulua.Lock.Lock() DoEvent() - ulua.Lock.Unlock() } } @@ -380,11 +378,15 @@ func DoEvent() { select { case f := <-shell.Jobs: // If a new job has finished while running in the background we should execute the callback + ulua.Lock.Lock() f.Function(f.Output, f.Args) + ulua.Lock.Unlock() case <-config.Autosave: + ulua.Lock.Lock() for _, b := range buffer.OpenBuffers { b.Save() } + ulua.Lock.Unlock() case <-shell.CloseTerms: case event = <-events: case <-screen.DrawChan(): @@ -393,9 +395,11 @@ func DoEvent() { } } + ulua.Lock.Lock() if action.InfoBar.HasPrompt { action.InfoBar.HandleEvent(event) } else { action.Tabs.HandleEvent(event) } + ulua.Lock.Unlock() } -- 2.44.0