From 810133d5a893bc12e13fa1cf8d1f3a28bcf896ad Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 19 Aug 2022 15:46:01 -0700 Subject: [PATCH] Use shell job for terminal callback Fixes #2529 --- cmd/micro/micro.go | 2 -- internal/screen/screen.go | 3 --- internal/shell/terminal.go | 8 +++++++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 4af1d295..e0590244 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -388,7 +388,6 @@ func DoEvent() { var event tcell.Event // Display everything - screen.DrawLock.Lock() screen.Screen.Fill(' ', config.DefStyle) screen.Screen.HideCursor() action.Tabs.Display() @@ -398,7 +397,6 @@ func DoEvent() { action.MainTab().Display() action.InfoBar.Display() screen.Screen.Show() - screen.DrawLock.Unlock() // Check for new events select { diff --git a/internal/screen/screen.go b/internal/screen/screen.go index 0f1cd64b..967e8617 100644 --- a/internal/screen/screen.go +++ b/internal/screen/screen.go @@ -24,7 +24,6 @@ var Events chan (tcell.Event) // The lock is necessary since the screen is polled on a separate thread var lock sync.Mutex -var DrawLock sync.Mutex // drawChan is a channel that will cause the screen to redraw when // written to even if no event user event has occurred @@ -121,7 +120,6 @@ func TempFini() bool { if !screenWasNil { Screen.Fini() Lock() - DrawLock.Lock() Screen = nil } return screenWasNil @@ -132,7 +130,6 @@ func TempStart(screenWasNil bool) { if !screenWasNil { Init() Unlock() - DrawLock.Unlock() } } diff --git a/internal/shell/terminal.go b/internal/shell/terminal.go index 4de8de23..8dd8c088 100644 --- a/internal/shell/terminal.go +++ b/internal/shell/terminal.go @@ -128,7 +128,13 @@ func (t *Terminal) Close() { // call the lua function that the user has given as a callback if t.getOutput { if t.callback != nil { - t.callback(t.output.String()) + Jobs <- JobFunction{ + Function: func(out string, args []interface{}) { + t.callback(out) + }, + Output: t.output.String(), + Args: nil, + } } } } -- 2.44.0