summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--widgets/terminal.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/widgets/terminal.go b/widgets/terminal.go
index 5baaec2..cd265f6 100644
--- a/widgets/terminal.go
+++ b/widgets/terminal.go
@@ -108,6 +108,7 @@ type Terminal struct {
damageMutex sync.Mutex
writeMutex sync.Mutex
readMutex sync.Mutex
+ closeMutex sync.Mutex
OnClose func(err error)
OnEvent func(event tcell.Event) bool
@@ -178,6 +179,9 @@ func (term *Terminal) flushTerminal() {
}
func (term *Terminal) Close(err error) {
+ term.closeMutex.Lock()
+ defer term.closeMutex.Unlock()
+
if term.closed {
return
}
@@ -199,6 +203,9 @@ func (term *Terminal) Close(err error) {
}
func (term *Terminal) Destroy() {
+ term.closeMutex.Lock()
+ defer term.closeMutex.Unlock()
+
if term.destroyed {
return
}
@@ -228,6 +235,9 @@ func (term *Terminal) invalidate() {
}
func (term *Terminal) Draw(ctx *ui.Context) {
+ term.closeMutex.Lock()
+ defer term.closeMutex.Unlock()
+
if term.destroyed {
return
}