diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pcm/pcm_ioplug.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/pcm/pcm_ioplug.c b/src/pcm/pcm_ioplug.c index 115d89bc..1dc198e7 100644 --- a/src/pcm/pcm_ioplug.c +++ b/src/pcm/pcm_ioplug.c @@ -434,14 +434,16 @@ static int snd_pcm_ioplug_hw_free(snd_pcm_t *pcm) static int snd_pcm_ioplug_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) { ioplug_priv_t *io = pcm->private_data; - int err = 0; + int err; - if (io->data->callback->sw_params) { - snd_pcm_unlock(pcm); /* to avoid deadlock */ - err = io->data->callback->sw_params(io->data, params); - snd_pcm_lock(pcm); - } - return 0; + if (!io->data->callback->sw_params) + return 0; + + snd_pcm_unlock(pcm); /* to avoid deadlock */ + err = io->data->callback->sw_params(io->data, params); + snd_pcm_lock(pcm); + + return err; } |