Use shell job for terminal callback

Fixes #2529
This commit is contained in:
Zachary Yedidia
2022-08-19 15:46:01 -07:00
parent 3d6b0c6dd6
commit 810133d5a8
3 changed files with 7 additions and 6 deletions

View File

@@ -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 {

View File

@@ -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()
}
}

View File

@@ -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,
}
}
}
}