* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <iostream>
#include <limits>
#include "evoral/ControlSet.hpp"
#include "evoral/ControlList.hpp"
{
}
+ControlSet::ControlSet (const ControlSet& other)
+ : noncopyable ()
+{
+ /* derived class must copy controls */
+}
+
void
ControlSet::add_control(boost::shared_ptr<Control> ac)
{
_controls[ac->parameter()] = ac;
+
+ ac->ListMarkedDirty.connect_same_thread (_control_connections, boost::bind (&ControlSet::control_list_marked_dirty, this));
+
+ ac->list()->InterpolationChanged.connect_same_thread (
+ _list_connections, boost::bind (&ControlSet::control_list_interpolation_changed, this, ac->parameter(), _1)
+ );
}
void
return ac;
} else {
- //warning << "ControlList " << parameter.to_string() << " not found for " << _name << endmsg;
return boost::shared_ptr<Control>();
}
}
bool
-ControlSet::find_next_event (FrameTime now, FrameTime end, ControlEvent& next_event) const
+ControlSet::find_next_event (double now, double end, ControlEvent& next_event) const
{
Controls::const_iterator li;
- next_event.when = std::numeric_limits<FrameTime>::max();
+ next_event.when = std::numeric_limits<double>::max();
for (li = _controls.begin(); li != _controls.end(); ++li) {
ControlList::const_iterator i;
}
}
- return next_event.when != std::numeric_limits<FrameTime>::max();
+ return next_event.when != std::numeric_limits<double>::max();
}
void
{
Glib::Mutex::Lock lm (_control_lock);
+ _control_connections.drop_connections ();
+ _list_connections.drop_connections ();
+
for (Controls::iterator li = _controls.begin(); li != _controls.end(); ++li)
li->second->list()->clear();
}
-
} // namespace Evoral