Browse Source

alsa_driver: extract alsa_driver_prepare to a separate function

pull/949/head
Adam Miartus 1 year ago
parent
commit
4579cffc0f
1 changed files with 19 additions and 6 deletions
  1. +19
    -6
      linux/alsa/alsa_driver.c

+ 19
- 6
linux/alsa/alsa_driver.c View File

@@ -95,6 +95,17 @@ jack_driver_nt_init (jack_driver_nt_t * driver)
driver->nt_run_cycle = 0;
}

static int
alsa_driver_prepare (snd_pcm_t *handle, int is_capture)
{
int res = snd_pcm_prepare (handle);
if (res < 0) {
jack_error("error preparing: %s", snd_strerror(res));
}

return res;
}

static void
alsa_driver_release_channel_dependent_memory (alsa_driver_t *driver)
{
@@ -1078,7 +1089,7 @@ alsa_driver_start (alsa_driver_t *driver)
driver->poll_next = 0;

if (driver->playback_handle) {
if ((err = snd_pcm_prepare (driver->playback_handle)) < 0) {
if ((err = alsa_driver_prepare (driver->playback_handle, SND_PCM_STREAM_PLAYBACK)) < 0) {
jack_error ("ALSA: prepare error for playback on "
"\"%s\" (%s)", driver->alsa_name_playback,
snd_strerror(err));
@@ -1088,7 +1099,7 @@ alsa_driver_start (alsa_driver_t *driver)

if ((driver->capture_handle && driver->capture_and_playback_not_synced)
|| !driver->playback_handle) {
if ((err = snd_pcm_prepare (driver->capture_handle)) < 0) {
if ((err = alsa_driver_prepare (driver->capture_handle, SND_PCM_STREAM_CAPTURE)) < 0) {
jack_error ("ALSA: prepare error for capture on \"%s\""
" (%s)", driver->alsa_name_capture,
snd_strerror(err));
@@ -1295,13 +1306,13 @@ alsa_driver_xrun_recovery (alsa_driver_t *driver, float *delayed_usecs)
{
jack_log("**** alsa_pcm: pcm in suspended state, resuming it" );
if (driver->capture_handle) {
if ((res = snd_pcm_prepare(driver->capture_handle))
if ((res = alsa_driver_prepare(driver->capture_handle, SND_PCM_STREAM_CAPTURE))
< 0) {
jack_error("error preparing after suspend: %s", snd_strerror(res));
}
}
if (driver->playback_handle) {
if ((res = snd_pcm_prepare(driver->playback_handle))
if ((res = alsa_driver_prepare(driver->playback_handle, SND_PCM_STREAM_PLAYBACK))
< 0) {
jack_error("error preparing after suspend: %s", snd_strerror(res));
}
@@ -1319,13 +1330,15 @@ alsa_driver_xrun_recovery (alsa_driver_t *driver, float *delayed_usecs)
jack_log("**** alsa_pcm: xrun of at least %.3f msecs",*delayed_usecs / 1000.0);
if (driver->capture_handle) {
jack_log("Repreparing capture");
if ((res = snd_pcm_prepare(driver->capture_handle)) < 0) {
if ((res = alsa_driver_prepare(driver->capture_handle,
SND_PCM_STREAM_CAPTURE)) < 0) {
jack_error("error preparing after xrun: %s", snd_strerror(res));
}
}
if (driver->playback_handle) {
jack_log("Repreparing playback");
if ((res = snd_pcm_prepare(driver->playback_handle)) < 0) {
if ((res = alsa_driver_prepare(driver->playback_handle,
SND_PCM_STREAM_PLAYBACK)) < 0) {
jack_error("error preparing after xrun: %s", snd_strerror(res));
}
}


Loading…
Cancel
Save