summaryrefslogtreecommitdiffstats
path: root/sound/core
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2007-08-10 09:39:14 +0200
committerJaroslav Kysela <perex@perex.cz>2007-10-16 15:58:36 +0200
commit0b664f7206fac9676559e0012d8accc2dc0fc9fd (patch)
tree4a7e5945aa12976dc6719d29a4ffe078ea9631c9 /sound/core
parent[ALSA] seq_midi_event: fix encoding of data bytes after end of sysex (diff)
downloadlinux-0b664f7206fac9676559e0012d8accc2dc0fc9fd.tar.xz
linux-0b664f7206fac9676559e0012d8accc2dc0fc9fd.zip
[ALSA] seq_midi_event: prevent running status after system messages
Reset the event type after encoding a system message to prevent any following data bytes from being interpreted as data for a running status system message, which is not allowed in MIDI. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/core')
-rw-r--r--sound/core/seq/seq_midi_event.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sound/core/seq/seq_midi_event.c b/sound/core/seq/seq_midi_event.c
index cb38ff33f628..45ba6fc4646a 100644
--- a/sound/core/seq/seq_midi_event.c
+++ b/sound/core/seq/seq_midi_event.c
@@ -283,6 +283,8 @@ int snd_midi_event_encode_byte(struct snd_midi_event *dev, int c,
ev->flags |= SNDRV_SEQ_EVENT_LENGTH_FIXED;
if (status_event[dev->type].encode) /* set data values */
status_event[dev->type].encode(dev, ev);
+ if (dev->type >= ST_SPECIAL)
+ dev->type = ST_INVALID;
rc = 1;
} else if (dev->type == ST_SYSEX) {
if (c == MIDI_CMD_COMMON_SYSEX_END ||