summaryrefslogtreecommitdiffstats
path: root/src/AlsaInput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/AlsaInput.cpp')
-rw-r--r--src/AlsaInput.cpp15
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) {