mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
ALSA: seq: virmidi: Add a drain operation
If a driver does not supply a drain operation for outputs, a default code path will execute msleep(50). Especially for a virtual midi device this severely limmits the throughput. This implementation for the virtual midi driver simply flushes the output workqueue. Signed-off-by: Stefan Sauer <st_kost@gmx.de> Link: https://lore.kernel.org/r/20220106124145.17254-1-st_kost@gmx.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
b81e9e5c72
commit
7560ee032b
1 changed files with 11 additions and 0 deletions
|
@ -262,6 +262,16 @@ static int snd_virmidi_output_close(struct snd_rawmidi_substream *substream)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* drain output work queue
|
||||||
|
*/
|
||||||
|
static void snd_virmidi_output_drain(struct snd_rawmidi_substream *substream)
|
||||||
|
{
|
||||||
|
struct snd_virmidi *vmidi = substream->runtime->private_data;
|
||||||
|
|
||||||
|
flush_work(&vmidi->output_work);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* subscribe callback - allow output to rawmidi device
|
* subscribe callback - allow output to rawmidi device
|
||||||
*/
|
*/
|
||||||
|
@ -336,6 +346,7 @@ static const struct snd_rawmidi_ops snd_virmidi_output_ops = {
|
||||||
.open = snd_virmidi_output_open,
|
.open = snd_virmidi_output_open,
|
||||||
.close = snd_virmidi_output_close,
|
.close = snd_virmidi_output_close,
|
||||||
.trigger = snd_virmidi_output_trigger,
|
.trigger = snd_virmidi_output_trigger,
|
||||||
|
.drain = snd_virmidi_output_drain,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue