From a65fd7916e69a4b399d553e39bd447cc78a2ad5c Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Wed, 5 Aug 2020 20:03:38 +0200 Subject: [PATCH] drain connections, close wave files refs #146 --- owrx/audio.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/owrx/audio.py b/owrx/audio.py index 76505bf..35fac28 100644 --- a/owrx/audio.py +++ b/owrx/audio.py @@ -209,13 +209,30 @@ class AudioWriter(object): self.switchingLock.release() def stop(self): - self.outputReader.close() self.outputWriter.close() + self.outputWriter = None + + # drain messages left in the queue so that the queue can be successfully closed + # this is necessary since python keeps the file descriptors open otherwise + try: + while True: + self.outputReader.recv() + except EOFError: + pass + self.outputReader.close() + self.outputReader = None + self.cancelTimer() + try: + self.wavefile.close() + except Exception: + logger.exception("error closing wave file") try: os.unlink(self.wavefilename) except Exception: logger.exception("error removing undecoded file") + self.wavefile = None + self.wavefilename = None class AudioChopper(threading.Thread, metaclass=ABCMeta):