[alsa-devel] [PATCH 3/5] ALSA: firewire-lib: schedule work again when MIDI substream has rest of MIDI messages

Takashi Sakamoto o-takashi at sakamocchi.jp
Fri Oct 9 01:10:27 CEST 2015


Currently, when two MIDI trigger callbacks can be called immediately,
transactions for the second MIDI messages can be postpone till next trigger
callback. This is not good for real-time message transmission.

This commit schedules work again at response handling callback if the
MIDI substream still includes untransferred MIDI messages.

Signed-off-by: Takashi Sakamoto <o-takashi at sakamocchi.jp>
---
 sound/firewire/lib.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sound/firewire/lib.c b/sound/firewire/lib.c
index ddc3e88..3e9afd7 100644
--- a/sound/firewire/lib.c
+++ b/sound/firewire/lib.c
@@ -78,6 +78,9 @@ static void async_midi_port_callback(struct fw_card *card, int rcode,
 		snd_rawmidi_transmit_ack(substream, port->consume_bytes);
 
 	port->idling = true;
+
+	if (!snd_rawmidi_transmit_empty(substream))
+		schedule_work(&port->work);
 }
 
 static void midi_port_work(struct work_struct *work)
-- 
2.1.4



More information about the Alsa-devel mailing list