diff --git a/include/seqmid.h b/include/seqmid.h index 6caddf27..d47d3646 100644 --- a/include/seqmid.h +++ b/include/seqmid.h @@ -35,11 +35,13 @@ void snd_seq_ev_schedule_real(snd_seq_event_t *ev, int q, int relative, /* set event priority (optional) */ void snd_seq_ev_set_priority(snd_seq_event_t *ev, int high_prior); -/* set event data type - following two macros are exclusive */ +/* set event data type - following three macros are exclusive */ /* fixed size event */ void snd_seq_ev_set_fixed(snd_seq_event_t *ev); /* variable size event */ void snd_seq_ev_set_variable(snd_seq_event_t *ev, int len, void *ptr); + /* variable size event - user memory space */ +void snd_seq_ev_set_varusr(snd_seq_event_t *ev, int len, void *ptr); /* set queue control event data */ /* destination is overwritten to Timer port (0:0) */ diff --git a/src/seq/seqmid.c b/src/seq/seqmid.c index 2d0c68ac..dcef2223 100644 --- a/src/seq/seqmid.c +++ b/src/seq/seqmid.c @@ -81,6 +81,15 @@ void snd_seq_ev_set_variable(snd_seq_event_t *ev, int len, void *ptr) ev->data.ext.ptr = ptr; } +/* set varusr data */ +void snd_seq_ev_set_varusr(snd_seq_event_t *ev, int len, void *ptr) +{ + ev->flags &= ~SND_SEQ_EVENT_LENGTH_MASK; + ev->flags |= SND_SEQ_EVENT_LENGTH_VARUSR; + ev->data.ext.len = len; + ev->data.ext.ptr = ptr; +} + /* use or unuse a queue */ int snd_seq_use_queue(snd_seq_t *seq, int q, int use)