+ControlList
+AutomationControl::grouped_controls () const
+{
+ if (_group && _group->use_me (PBD::Controllable::UseGroup)) {
+ return _group->controls ();
+ } else {
+ return ControlList ();
+ }
+}
+
+void
+AutomationControl::automation_run (samplepos_t start, pframes_t nframes)
+{
+ if (!automation_playback ()) {
+ return;
+ }
+
+ assert (_list);
+ bool valid = false;
+ double val = _list->rt_safe_eval (start, valid);
+ if (!valid) {
+ return;
+ }
+ if (toggled ()) {
+ const double thresh = .5 * (_desc.upper - _desc.lower);
+ set_value_unchecked (val >= thresh ? _desc.upper : _desc.lower);
+ } else {
+ set_value_unchecked (val);
+ }
+}
+