[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
Wed Oct 7 02:19:37 CEST 2015


Currently, when two MIDI trigger callbacks are called immediately,
transactions for the second MIDI messages are 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