I have a state depth pointer that supresses the
feedback if it goes >1 and
gets incremented at each feedback point. Seems to work OK, but its a
kludge.
the signal blocking system is a bit less of a kludge. another
approach, used in ardour (though less so these days) is to "sign"
every state change. then the views check to see if they were the
originator of the change, and ignore it if so.