31 ControlSet::ControlSet()
49 ac->list()->InterpolationChanged.connect_same_thread (
52 this, ac->parameter(), _1));
62 if (li->second->list() && !li->second->list()->empty()) {
75 Controls::iterator i =
_controls.find(parameter);
80 }
else if (create_if_missing) {
93 Controls::const_iterator li;
95 next_event.
when = std::numeric_limits<double>::max();
106 i != alist->end() && (*i)->when < end; ++i) {
107 if ((*i)->when > now) {
112 if (i != alist->end() && (*i)->when < end) {
113 if ((*i)->when < next_event.
when) {
114 next_event.
when = (*i)->when;
119 return next_event.
when != std::numeric_limits<double>::max();
131 if (li->second->list()) {
132 li->second->list()->clear();
boost::shared_ptr< Control > control(const Parameter &id, bool create_if_missing=false)
bool find_next_event(double start, double end, ControlEvent &ev) const
Glib::Threads::Mutex _control_lock
virtual void control_list_interpolation_changed(Parameter, ControlList::InterpolationStyle)
void what_has_data(std::set< Parameter > &) const
virtual void clear_controls()
EventList::const_iterator const_iterator
virtual void add_control(boost::shared_ptr< Control >)
PBD::ScopedConnectionList _control_connections
virtual void control_list_marked_dirty()
PBD::ScopedConnectionList _list_connections
static bool time_comparator(const ControlEvent *a, const ControlEvent *b)
virtual boost::shared_ptr< Evoral::Control > control_factory(const Evoral::Parameter &id)=0