ALSA: line6: Handle error from line6_pcm_acquire()
Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
2954f914f2
commit
247d95ee6d
|
@ -45,15 +45,22 @@ static int snd_line6_impulse_volume_put(struct snd_kcontrol *kcontrol,
|
|||
{
|
||||
struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol);
|
||||
int value = ucontrol->value.integer.value[0];
|
||||
int err;
|
||||
|
||||
if (line6pcm->impulse_volume == value)
|
||||
return 0;
|
||||
|
||||
line6pcm->impulse_volume = value;
|
||||
if (value > 0)
|
||||
line6_pcm_acquire(line6pcm, LINE6_STREAM_IMPULSE);
|
||||
else
|
||||
if (value > 0) {
|
||||
err = line6_pcm_acquire(line6pcm, LINE6_STREAM_IMPULSE);
|
||||
if (err < 0) {
|
||||
line6pcm->impulse_volume = 0;
|
||||
line6_pcm_release(line6pcm, LINE6_STREAM_IMPULSE);
|
||||
return err;
|
||||
}
|
||||
} else {
|
||||
line6_pcm_release(line6pcm, LINE6_STREAM_IMPULSE);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -182,16 +182,23 @@ static int snd_toneport_monitor_put(struct snd_kcontrol *kcontrol,
|
|||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol);
|
||||
int err;
|
||||
|
||||
if (ucontrol->value.integer.value[0] == line6pcm->volume_monitor)
|
||||
return 0;
|
||||
|
||||
line6pcm->volume_monitor = ucontrol->value.integer.value[0];
|
||||
|
||||
if (line6pcm->volume_monitor > 0)
|
||||
line6_pcm_acquire(line6pcm, LINE6_STREAM_MONITOR);
|
||||
else
|
||||
if (line6pcm->volume_monitor > 0) {
|
||||
err = line6_pcm_acquire(line6pcm, LINE6_STREAM_MONITOR);
|
||||
if (err < 0) {
|
||||
line6pcm->volume_monitor = 0;
|
||||
line6_pcm_release(line6pcm, LINE6_STREAM_MONITOR);
|
||||
return err;
|
||||
}
|
||||
} else {
|
||||
line6_pcm_release(line6pcm, LINE6_STREAM_MONITOR);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue