diff options
author | Alex Shi <alex.shi@linaro.org> | 2017-11-30 12:03:38 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2017-11-30 12:03:38 +0800 |
commit | 1184d6e8873282bcb4ba1d57da1cdd423a0f42d6 (patch) | |
tree | 66bf3b45f218c738312d40e90c52f25069709892 /sound/core/seq/oss/seq_oss_readq.c | |
parent | 382ac60c32998318f133b8b84030aa83a8f600fe (diff) | |
parent | 4e22accddef27103c4fba20b9613b7bf52129be6 (diff) |
Merge remote-tracking branch 'rt-stable/v4.9-rt' into linux-linaro-lsk-v4.9-rtlsk-v4.9-17.11-rt
Diffstat (limited to 'sound/core/seq/oss/seq_oss_readq.c')
-rw-r--r-- | sound/core/seq/oss/seq_oss_readq.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sound/core/seq/oss/seq_oss_readq.c b/sound/core/seq/oss/seq_oss_readq.c index 046cb586fb2f..06b21226b4e7 100644 --- a/sound/core/seq/oss/seq_oss_readq.c +++ b/sound/core/seq/oss/seq_oss_readq.c @@ -118,6 +118,35 @@ snd_seq_oss_readq_puts(struct seq_oss_readq *q, int dev, unsigned char *data, in } /* + * put MIDI sysex bytes; the event buffer may be chained, thus it has + * to be expanded via snd_seq_dump_var_event(). + */ +struct readq_sysex_ctx { + struct seq_oss_readq *readq; + int dev; +}; + +static int readq_dump_sysex(void *ptr, void *buf, int count) +{ + struct readq_sysex_ctx *ctx = ptr; + + return snd_seq_oss_readq_puts(ctx->readq, ctx->dev, buf, count); +} + +int snd_seq_oss_readq_sysex(struct seq_oss_readq *q, int dev, + struct snd_seq_event *ev) +{ + struct readq_sysex_ctx ctx = { + .readq = q, + .dev = dev + }; + + if ((ev->flags & SNDRV_SEQ_EVENT_LENGTH_MASK) != SNDRV_SEQ_EVENT_LENGTH_VARIABLE) + return 0; + return snd_seq_dump_var_event(ev, readq_dump_sysex, &ctx); +} + +/* * copy an event to input queue: * return zero if enqueued */ |