On Mon, Jan 21, 2013 at 11:30 AM, Thomas Grill <gr@grrrr.org> wrote:
Sorry, one more note:
In libpd, sched_tick is currently calling in the PROCESS macro in the context of the audio callback (in z_libpd.c).
The function sched_tick handles all timed objects (such as metro) and therefore triggers all kinds of message processing downstream, where also memory operations commonly happen.
In this sense, calling sys_domicrosleep at the end of PROCESS does not make the situation worse than it is right now.

gr~~~


Why doesn't sched_tick call sys_domicrosleep then?

That function is making sleep and lock calls that I don't think should be made in libpd's process loop verbatum - timing is handled by whatever audio callback mechanism is using libpd and locking is handled within the language / framework wrappers.

It looks like the meat and potatoes is the following funky guy:

(*sys_fdpoll[i].fdp_fn)(sys_fdpoll[i].fdp_ptr, sys_fdpoll[i].fdp_fd);


If this were to be utilized by libpd, we should probably create a new, barebones method that does this polling (whatever that is...).


cheers,

Rich