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?