fix: timeout when waiting for CancelReader

Fixes #524.
This commit is contained in:
Christian Muehlhaeuser 2022-10-11 09:26:34 +02:00
parent b9bd01b79a
commit 8703897aad
2 changed files with 1 additions and 7 deletions

3
tea.go
View File

@ -446,7 +446,6 @@ func (p *Program) Run() (Model, error) {
return model, err return model, err
} }
defer p.cancelReader.Close() //nolint:errcheck defer p.cancelReader.Close() //nolint:errcheck
handlers.add(p.readLoopDone)
} }
// Handle resize events. // Handle resize events.
@ -546,7 +545,7 @@ func (p *Program) shutdown(kill bool) {
// reader. You can return control to the Program with RestoreTerminal. // reader. You can return control to the Program with RestoreTerminal.
func (p *Program) ReleaseTerminal() error { func (p *Program) ReleaseTerminal() error {
p.ignoreSignals = true p.ignoreSignals = true
p.cancelInput() p.cancelReader.Cancel()
p.waitForReadLoop() p.waitForReadLoop()
p.altScreenWasActive = p.renderer.altScreen() p.altScreenWasActive = p.renderer.altScreen()

5
tty.go
View File

@ -79,11 +79,6 @@ func (p *Program) readLoop() {
} }
} }
// cancelInput cancels the input reader.
func (p *Program) cancelInput() {
p.cancelReader.Cancel()
}
// waitForReadLoop waits for the cancelReader to finish its read loop. // waitForReadLoop waits for the cancelReader to finish its read loop.
func (p *Program) waitForReadLoop() { func (p *Program) waitForReadLoop() {
select { select {