From: Zachary Yedidia Date: Wed, 17 Aug 2022 05:07:41 +0000 (-0700) Subject: Ensure screen cannot draw during a term prompt X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=3d6b0c6dd6476a7a29ca334facef0f04571d71ee;p=micro.git Ensure screen cannot draw during a term prompt Fixes #2528 --- diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index e0590244..4af1d295 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -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 { diff --git a/internal/screen/screen.go b/internal/screen/screen.go index 967e8617..0f1cd64b 100644 --- a/internal/screen/screen.go +++ b/internal/screen/screen.go @@ -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() } }