#include <boost/shared_ptr.hpp>
+#include "pbd/rcu.h"
#include "pbd/signals.h"
#include "evoral/ControlSet.hpp"
virtual ~Automatable();
+ static bool skip_saving_automation; // to be used only by session-state
+
boost::shared_ptr<Evoral::Control> control_factory(const Evoral::Parameter& id);
boost::shared_ptr<AutomationControl> automation_control (PBD::ID const & id) const;
virtual bool find_next_event (double start, double end, Evoral::ControlEvent& ev, bool only_active = true) const;
void clear_controls ();
- virtual void transport_located (framepos_t now);
- virtual void transport_stopped (framepos_t now);
+ virtual void non_realtime_locate (samplepos_t now);
+ virtual void non_realtime_transport_stop (samplepos_t now, bool flush);
- virtual void automation_run (framepos_t, pframes_t);
+ virtual void automation_run (samplepos_t, pframes_t, bool only_active = false);
virtual std::string describe_parameter(Evoral::Parameter param);
void can_automate(Evoral::Parameter);
- virtual void automation_list_automation_state_changed (Evoral::Parameter, AutoState) {}
+ virtual void automation_list_automation_state_changed (Evoral::Parameter, AutoState);
+ SerializedRCUManager<ControlList> _automated_controls;
int load_automation (const std::string& path);
int old_set_automation_state(const XMLNode&);
std::set<Evoral::Parameter> _can_automate_list;
- framepos_t _last_automation_snapshot;
+ samplepos_t _last_automation_snapshot;
SlavableControlList slavables () const { return SlavableControlList(); }
private:
+ inline void find_next_ac_event (boost::shared_ptr<AutomationControl>, double start, double end, Evoral::ControlEvent& ev) const;
+
PBD::ScopedConnectionList _control_connections; ///< connections to our controls' signals
};