Ensure screen cannot draw during a term prompt

Fixes #2528
This commit is contained in:
Zachary Yedidia 2022-08-16 22:07:41 -07:00
parent 225927b9a2
commit 3d6b0c6dd6
2 changed files with 5 additions and 0 deletions

View file

@ -388,6 +388,7 @@ func DoEvent() {
var event tcell.Event
// Display everything
screen.DrawLock.Lock()
screen.Screen.Fill(' ', config.DefStyle)
screen.Screen.HideCursor()
action.Tabs.Display()
@ -397,6 +398,7 @@ func DoEvent() {
action.MainTab().Display()
action.InfoBar.Display()
screen.Screen.Show()
screen.DrawLock.Unlock()
// Check for new events
select {

View file

@ -24,6 +24,7 @@ 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
@ -120,6 +121,7 @@ func TempFini() bool {
if !screenWasNil {
Screen.Fini()
Lock()
DrawLock.Lock()
Screen = nil
}
return screenWasNil
@ -130,6 +132,7 @@ func TempStart(screenWasNil bool) {
if !screenWasNil {
Init()
Unlock()
DrawLock.Unlock()
}
}