tree 292c421927434fab4a5e6017b6b842b633d6e51b
parent 7858ffa062886706026cfff3ba80b8400b520501
author Clemens Ladisch <[EMAIL PROTECTED]> Thu, 21 Jul 2005 08:01:22 +0200
committer Jaroslav Kysela <[EMAIL PROTECTED]> Thu, 28 Jul 2005 12:22:34 +0200
[ALSA] seq-midi - silently ignore non-MIDI events
ALSA sequencer
When non-MIDI sequencer events are sent to a RawMIDI port, silently
ignore them instead of returning a confusing error code which may upset
the sequencer and abort the current write() to /dev/snd/seq.
Signed-off-by: Clemens Ladisch <[EMAIL PROTECTED]>
sound/core/seq/seq_midi.c | 16 ++++++----------
1 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/sound/core/seq/seq_midi.c b/sound/core/seq/seq_midi.c
--- a/sound/core/seq/seq_midi.c
+++ b/sound/core/seq/seq_midi.c
@@ -134,7 +134,7 @@ static int event_process_midi(snd_seq_ev
seq_midisynth_t *msynth = (seq_midisynth_t *) private_data;
unsigned char msg[10]; /* buffer for constructing midi messages */
snd_rawmidi_substream_t *substream;
- int res;
+ int len;
snd_assert(msynth != NULL, return -EINVAL);
substream = msynth->output_rfile.output;
@@ -146,20 +146,16 @@ static int event_process_midi(snd_seq_ev
snd_printd("seq_midi: invalid sysex event flags =
0x%x\n", ev->flags);
return 0;
}
- res = snd_seq_dump_var_event(ev,
(snd_seq_dump_func_t)dump_midi, substream);
+ snd_seq_dump_var_event(ev, (snd_seq_dump_func_t)dump_midi,
substream);
snd_midi_event_reset_decode(msynth->parser);
- if (res < 0)
- return res;
} else {
if (msynth->parser == NULL)
return -EIO;
- res = snd_midi_event_decode(msynth->parser, msg, sizeof(msg),
ev);
- if (res < 0)
- return res;
- if ((res = dump_midi(substream, msg, res)) < 0) {
+ len = snd_midi_event_decode(msynth->parser, msg, sizeof(msg),
ev);
+ if (len < 0)
+ return 0;
+ if (dump_midi(substream, msg, len) < 0)
snd_midi_event_reset_decode(msynth->parser);
- return res;
- }
}
return 0;
}
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html