summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-06-14 20:43:29 +0200
committerRobin Gareus <robin@gareus.org>2015-06-14 22:26:06 +0200
commit94c146c7801dcab403eee721805a5825f40c61bd (patch)
tree94c93cfdf55467c81767906aba655186a150bf33
parent573ec69a9aa29b08d99cba56284660fcd080fb55 (diff)
prepare ALSA backend for half-duplex
-rw-r--r--libs/backends/alsa/alsa_audiobackend.cc4
-rw-r--r--libs/backends/alsa/zita-alsa-pcmi.cc11
2 files changed, 12 insertions, 3 deletions
diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc
index a2ed9f8b07..4e65c9e4ba 100644
--- a/libs/backends/alsa/alsa_audiobackend.cc
+++ b/libs/backends/alsa/alsa_audiobackend.cc
@@ -953,8 +953,8 @@ AlsaAudioBackend::register_system_audio_ports()
{
LatencyRange lr;
- const int a_ins = _n_inputs > 0 ? _n_inputs : 2;
- const int a_out = _n_outputs > 0 ? _n_outputs : 2;
+ const int a_ins = _n_inputs;
+ const int a_out = _n_outputs;
/* audio ports */
lr.min = lr.max = (_measure_latency ? 0 : _systemic_audio_input_latency);
diff --git a/libs/backends/alsa/zita-alsa-pcmi.cc b/libs/backends/alsa/zita-alsa-pcmi.cc
index 6eead7e28b..3c271b6907 100644
--- a/libs/backends/alsa/zita-alsa-pcmi.cc
+++ b/libs/backends/alsa/zita-alsa-pcmi.cc
@@ -270,6 +270,9 @@ int Alsa_pcmi::play_init (snd_pcm_uframes_t len)
const snd_pcm_channel_area_t *a;
int err;
+ if (!_play_handle) {
+ return 0;
+ }
if ((err = snd_pcm_mmap_begin (_play_handle, &a, &_play_offs, &len)) < 0)
{
if (_debug & DEBUG_DATA) fprintf (stderr, "Alsa_pcmi: snd_pcm_mmap_begin(play): %s.\n", snd_strerror (err));
@@ -291,6 +294,10 @@ int Alsa_pcmi::capt_init (snd_pcm_uframes_t len)
const snd_pcm_channel_area_t *a;
int err;
+ if (!_capt_handle) {
+ return 0;
+ }
+
if ((err = snd_pcm_mmap_begin (_capt_handle, &a, &_capt_offs, &len)) < 0)
{
if (_debug & DEBUG_DATA) fprintf (stderr, "Alsa_pcmi: snd_pcm_mmap_begin(capt): %s.\n", snd_strerror (err));
@@ -326,12 +333,14 @@ void Alsa_pcmi::capt_chan (int chan, float *dst, int len, int step)
int Alsa_pcmi::play_done (int len)
{
+ if (!_play_handle) return 0;
return snd_pcm_mmap_commit (_play_handle, _play_offs, len);
}
int Alsa_pcmi::capt_done (int len)
{
+ if (!_capt_handle) return 0;
return snd_pcm_mmap_commit (_capt_handle, _capt_offs, len);
}
@@ -394,7 +403,7 @@ void Alsa_pcmi::initialise (const char *play_name, const char *capt_name, const
}
}
- if (! _play_handle || ! _capt_handle) return;
+ if (! _play_handle && ! _capt_handle) return;
if (ctrl_name)
{