[ALSA] seq-midi - silently ignore non-MIDI events
authorClemens Ladisch <clemens@ladisch.de>
Thu, 21 Jul 2005 06:01:22 +0000 (08:01 +0200)
committerJaroslav Kysela <perex@suse.cz>
Thu, 28 Jul 2005 10:22:34 +0000 (12:22 +0200)
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 <clemens@ladisch.de>
sound/core/seq/seq_midi.c

index 57be9155eb622854f97c4f85cacc1c3a259fb566..4374829ea77043300f088527e74ac815215f9293 100644 (file)
@@ -134,7 +134,7 @@ static int event_process_midi(snd_seq_event_t * ev, int direct,
        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_event_t * ev, int direct,
                        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;
 }