Skip to content

Commit

Permalink
[ALSA] Fix substream selection in PCM and rawmidi
Browse files Browse the repository at this point in the history
The PCM and rawmidi substreams can be selected explicitly by opening
control handle and set via *_PREFER_SUBDEVICE ioctl.  But, when
multiple controls are opened, the driver gets confused.
The patch fixes the initialization of prefer_*_subdevice and the
check of multiple controls.  The first set subdevice is picked up
as the valid one.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
  • Loading branch information
tiwai authored and Jaroslav Kysela committed Sep 23, 2006
1 parent f03d68f commit 2529bba
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
2 changes: 2 additions & 0 deletions sound/core/control.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ static int snd_ctl_open(struct inode *inode, struct file *file)
init_waitqueue_head(&ctl->change_sleep);
spin_lock_init(&ctl->read_lock);
ctl->card = card;
ctl->prefer_pcm_subdevice = -1;
ctl->prefer_rawmidi_subdevice = -1;
ctl->pid = current->pid;
file->private_data = ctl;
write_lock_irqsave(&card->ctl_files_rwlock, flags);
Expand Down
3 changes: 2 additions & 1 deletion sound/core/pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -792,7 +792,8 @@ int snd_pcm_attach_substream(struct snd_pcm *pcm, int stream,
kctl = snd_ctl_file(list);
if (kctl->pid == current->pid) {
prefer_subdevice = kctl->prefer_pcm_subdevice;
break;
if (prefer_subdevice != -1)
break;
}
}
up_read(&card->controls_rwsem);
Expand Down
3 changes: 2 additions & 1 deletion sound/core/rawmidi.c
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,8 @@ static int snd_rawmidi_open(struct inode *inode, struct file *file)
kctl = snd_ctl_file(list);
if (kctl->pid == current->pid) {
subdevice = kctl->prefer_rawmidi_subdevice;
break;
if (subdevice != -1)
break;
}
}
up_read(&card->controls_rwsem);
Expand Down

0 comments on commit 2529bba

Please sign in to comment.