there are basically two ways how abstractions communicate with each other: inlets and receives. i'd propose that every inlet / outlet / receive declares a loadbang function. before this loadbang function has been run, the outlet events are queued (maybe using clock callbacks), then then the behaviour is the same as currently. for the outlets it's more tricky, since they'd have to register a loadbang on the parent canvas.
I don't understand what you mean by all of this. Do you have an example?
it's like having an abstraction like this after the inlets:
|inlet data| | | |loadbang| | | | |flush( |/ |pipe infinity| | |outlet data|
misusing pipe as message queue ...
My suggestion would be that [loadbang] would take a single argument which would be an integer interpreted as a priority order, with a default value of zero. Negative values would be accepted.
similar to gemheads ... this would solve about about 99.999% of the cases, unless someone uses loadbang f, where f is the lowest number represented by t_float / the lowest number that a pd patch can save...
well, i somehow like to have a solution covering all cases ...
still thinking ... tim