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