summaryrefslogtreecommitdiff
diff options
authorMaciej Kisielewski <maciej.kisielewski@canonical.com>2019-09-12 13:19:00 +0200
committerMaciej Kisielewski <maciej.kisielewski@canonical.com>2019-09-12 13:19:00 +0200
commit2024e32085ffa497e2066a143089311b04676ab4 (patch)
tree72dc06ee7c79ed999f411fa3900d611ceb5c2727
parenta22ffcd829e4febf94194e1f2090df9dc5d116b6 (diff)
dont drain capture PCMs, drop them instead
Signed-off-by: Maciej Kisielewski <maciej.kisielewski@canonical.com>
-rw-r--r--src/alsa_test.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/alsa_test.cpp b/src/alsa_test.cpp
index 5145c917..dd7eeb4d 100644
--- a/src/alsa_test.cpp
+++ b/src/alsa_test.cpp
@@ -102,9 +102,22 @@ struct Pcm {
+ string(". ") + string(snd_strerror(res));
throw std::system_error(ec, msg);
}
+ logger.info() << "PCM opened. Name: " << device_name << " PCM handle: "
+ << pcm_handle << " PCM mode: "
+ << (int(mode) ? "capture" : "playback") << std::endl;
}
~Pcm() {
- snd_pcm_drain(this->pcm_handle);
+ switch (mode) {
+ case Mode::playback:
+ logger.info() << "Draining PCM " << pcm_handle << std::endl;
+ snd_pcm_drain(this->pcm_handle);
+ break;
+ case Mode::capture:
+ logger.info() << "Dropping PCM " << pcm_handle << std::endl;
+ snd_pcm_drop(this->pcm_handle);
+ break;
+ }
+ logger.info() << "Closing PCM " << pcm_handle << std::endl;
snd_pcm_close(this->pcm_handle);
}
void drain() {
@@ -234,6 +247,7 @@ private:
snd_pcm_t *pcm_handle;
unsigned rate;
snd_pcm_uframes_t period;
+ Mode mode;
};
template<>