summaryrefslogtreecommitdiff
path: root/libs/backends/alsa/zita-alsa-pcmi.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/backends/alsa/zita-alsa-pcmi.cc')
-rw-r--r--libs/backends/alsa/zita-alsa-pcmi.cc11
1 files changed, 10 insertions, 1 deletions
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)
{