[alsa-devel] sending a sequencer event to a delayed queue

Henning Thielemann alsa at henning-thielemann.de
Sun Mar 11 22:08:47 CET 2012


On Sun, 11 Mar 2012, Clemens Ladisch wrote:

> Yes; whether an event is delivered depends only on its scheduled time,
> not whether the queue is running.

That is, if the queue time is zero and the event time is zero, then the 
event is sent, independent of whether the queue is running or not. Right?

This is good to know and good to be documented. Is this documented 
somewhere and if not how could I document it myself? I remember there is 
an ALSA wiki ...


>> If I choose a time larger than 0, say 1ns or 1s, then the
>> event is not delivered at all.
>
> Starting a queue also clears it.  (This is done explicitly in the code,
> so I guess this is a feature.)

Should be certainly documented somehow. So maybe, 'CONTINUE' is the 
solution.

> I'd suggest to use one queue for both kinds of events, and to add the
> delay to the scheduled time.  To remove certain events, use
> snd_seq_remove_events().

I'll think about that.


Since we are at documentation. seq.h states:

#define SND_SEQ_PORT_CAP_SYNC_READ	(1<<2)	/**< allow read subscriptions */
#define SND_SEQ_PORT_CAP_SYNC_WRITE	(1<<3)	/**< allow write subscriptions */

...

#define SND_SEQ_PORT_CAP_SUBS_READ	(1<<5)	/**< allow read subscription */
#define SND_SEQ_PORT_CAP_SUBS_WRITE	(1<<6)	/**< allow write subscription */


So are the comments for SYNC_READ and SYNC_WRITE correct?


More information about the Alsa-devel mailing list