From 607a3aef3947e6f8a7dcecce9ac70577bed79096 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Sat, 26 Jun 2010 18:37:28 +0200 Subject: alsa: nicer channel switching --- dxr3audio-alsa.c | 13 ++++++++++++- dxr3audio-alsa.h | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/dxr3audio-alsa.c b/dxr3audio-alsa.c index 23af170..9d36df6 100644 --- a/dxr3audio-alsa.c +++ b/dxr3audio-alsa.c @@ -262,10 +262,12 @@ void cAudioAlsa::write(uchar* data, size_t size) void cAudioAlsa::flush() { - int err = snd_pcm_drop(handle); + snd_pcm_nonblock(handle, 0); + int err = snd_pcm_drain(handle); if (err < 0) { esyslog("[dxr3-audio-alsa] failed to pcm_drop: %s", snd_strerror(err)); } + snd_pcm_nonblock(handle, 1); err = snd_pcm_prepare(handle); if (err < 0) { @@ -273,6 +275,15 @@ void cAudioAlsa::flush() } } +void cAudioAlsa::setDigitalAudio(bool on) +{ + if (digitalAudio == on) { + return; + } + + // TODO stub +} + void cAudioAlsa::Xrun() { int res; diff --git a/dxr3audio-alsa.h b/dxr3audio-alsa.h index 81588ab..b07bf79 100644 --- a/dxr3audio-alsa.h +++ b/dxr3audio-alsa.h @@ -37,7 +37,7 @@ public: virtual void setup(int channels, int samplerate); virtual void write(uchar* data, size_t size); virtual void flush(); - virtual void setDigitalAudio(bool on) {} + virtual void setDigitalAudio(bool on); private: snd_pcm_t *handle; -- cgit v1.2.3