From f5a0b5e61e24445d80e136963ab65c30484dd7ca Mon Sep 17 00:00:00 2001 From: Nonoo Date: Sun, 25 Oct 2020 11:03:39 +0100 Subject: [PATCH] Fix occasional hang on audio deinit --- audio-linux.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/audio-linux.go b/audio-linux.go index eb9bdc5..7ba7951 100644 --- a/audio-linux.go +++ b/audio-linux.go @@ -127,6 +127,8 @@ func (a *audioStruct) loop() { select { case d = <-a.play: case <-a.deinitNeededChan: + a.close() + recLoopDeinitNeededChan <- true <-recLoopDeinitFinishedChan playLoopDeinitNeededChan <- true @@ -185,7 +187,7 @@ func (a *audioStruct) init(devName string) error { return nil } -func (a *audioStruct) deinit() { +func (a *audioStruct) close() { if a.source.IsOpen() { if err := a.source.Close(); err != nil { if _, ok := err.(*os.PathError); !ok { @@ -201,6 +203,10 @@ func (a *audioStruct) deinit() { } } } +} + +func (a *audioStruct) deinit() { + a.close() if a.deinitNeededChan != nil { a.deinitNeededChan <- true