|
@@ -174,12 +174,12 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
|
|
}
|
|
}
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ spin_lock_irqsave(&substream->runtime->lock, flags);
|
|
if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) {
|
|
if (vmidi->event.type != SNDRV_SEQ_EVENT_NONE) {
|
|
if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, in_atomic(), 0) < 0)
|
|
if (snd_seq_kernel_client_dispatch(vmidi->client, &vmidi->event, in_atomic(), 0) < 0)
|
|
- return;
|
|
|
|
|
|
+ goto out;
|
|
vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
|
|
vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
|
|
}
|
|
}
|
|
- spin_lock_irqsave(&substream->runtime->lock, flags);
|
|
|
|
while (1) {
|
|
while (1) {
|
|
count = __snd_rawmidi_transmit_peek(substream, buf, sizeof(buf));
|
|
count = __snd_rawmidi_transmit_peek(substream, buf, sizeof(buf));
|
|
if (count <= 0)
|
|
if (count <= 0)
|