diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-04-13 00:35:42 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-04-13 00:35:42 +0000 |
commit | 13699251d95d4d1732c05e37038a675f64e2f63f (patch) | |
tree | eb3bc815f91d70b58b9a38fb4199085fe73dcd5e /libs/ardour/track.cc | |
parent | d7595f71be052a6dc692053bdf13c06e3c80785f (diff) |
convert rec-enable control for a Track from PBD::COntrollable to ARDOUR::AutomatioNControl, and use in MCP
git-svn-id: svn://localhost/ardour2/branches/3.0@11956 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r-- | libs/ardour/track.cc | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 2ef3c85b4a..f7f0e6fdbe 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -44,7 +44,6 @@ Track::Track (Session& sess, string name, Route::Flag flag, TrackMode mode, Data , _saved_meter_point (_meter_point) , _mode (mode) , _monitoring (MonitorAuto) - , _rec_enable_control (new RecEnableControllable(*this)) { _freeze_record.state = NoFreeze; _declickable = true; @@ -64,6 +63,15 @@ Track::init () return -1; } + boost::shared_ptr<Route> rp (shared_from_this()); + boost::shared_ptr<Track> rt = boost::dynamic_pointer_cast<Track> (rp); + _rec_enable_control = boost::shared_ptr<RecEnableControl> (new RecEnableControl(rt)); + _rec_enable_control->set_flags (Controllable::Toggle); + + /* don't add rec_enable_control to controls because we don't want it to + * appear as an automatable parameter + */ + return 0; } @@ -195,23 +203,24 @@ Track::freeze_state() const return _freeze_record.state; } -Track::RecEnableControllable::RecEnableControllable (Track& s) - : Controllable (X_("recenable"), Controllable::Toggle), track (s) +Track::RecEnableControl::RecEnableControl (boost::shared_ptr<Track> t) + : AutomationControl (t->session(), RecEnableAutomation, boost::shared_ptr<AutomationList>(), X_("recenable")) + , track (t) { + boost::shared_ptr<AutomationList> gl(new AutomationList(Evoral::Parameter(RecEnableAutomation))); + set_list (gl); } void -Track::RecEnableControllable::set_value (double val) +Track::RecEnableControl::set_value (double val) { - bool bval = ((val >= 0.5) ? true: false); - track.set_record_enabled (bval, this); + track->set_record_enabled (val >= 0.5 ? true : false, this); } double -Track::RecEnableControllable::get_value (void) const +Track::RecEnableControl::get_value (void) const { - if (track.record_enabled()) { return 1.0; } - return 0.0; + return (track->record_enabled() ? 1.0 : 0.0); } bool |