diff options
Diffstat (limited to 'src/AlsaInput.cpp')
-rw-r--r-- | src/AlsaInput.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/AlsaInput.cpp b/src/AlsaInput.cpp index 0d3b40e..442304c 100644 --- a/src/AlsaInput.cpp +++ b/src/AlsaInput.cpp @@ -31,6 +31,9 @@ using namespace std; AlsaInput::~AlsaInput() { + // Ensures push() doesn't get blocked + m_queue.clear(); + if (m_alsa_handle) { snd_pcm_close(m_alsa_handle); m_alsa_handle = nullptr; @@ -123,6 +126,18 @@ ssize_t AlsaInput::m_read(uint8_t* buf, snd_pcm_uframes_t length) return err; } +AlsaInputThreaded::~AlsaInputThreaded() +{ + m_running = false; + + // Ensures push() doesn't get blocked + m_queue.clear(); + + if (m_thread.joinable()) { + m_thread.join(); + } +} + void AlsaInputThreaded::prepare() { if (m_fault) { |