diff options
author | Maciej Kisielewski <maciej.kisielewski@canonical.com> | 2019-09-12 13:19:00 +0200 |
---|---|---|
committer | Maciej Kisielewski <maciej.kisielewski@canonical.com> | 2019-09-12 13:19:00 +0200 |
commit | 2024e32085ffa497e2066a143089311b04676ab4 (patch) | |
tree | 72dc06ee7c79ed999f411fa3900d611ceb5c2727 | |
parent | a22ffcd829e4febf94194e1f2090df9dc5d116b6 (diff) |
dont drain capture PCMs, drop them instead
Signed-off-by: Maciej Kisielewski <maciej.kisielewski@canonical.com>
-rw-r--r-- | src/alsa_test.cpp | 16 |
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<> |